但是轉念一想,別人寫的畢竟是別人寫的,那是別人的,雖然我能看懂,也能為我所用,但始終不是從自己腦子裡一點點想出來的,不是自己手指在鍵盤上乙個字乙個字的敲出來的。
所以儘管自己都知道了,但是還是自己寫出來,總結出來,才算真正自己的東西。
好了,下面來聊一下結構體是什麼吧。
1、首先它是乙個體。
既然是乙個體,裡面肯定有很多互相作用的小模組。就是這樣,結構體裡可以定義很多不同資料型別的模組,字串,陣列,指標,整型,浮點數等等。
定義了結構體,我們就可以定義結構體變數,用開引用結構體中的小模組。典型的例子就是學生資訊管理系統。
關於結構體的定義呢,我們還是採用常用的方式,用typedef來定義結構體,方便後面定義結構體變數。一定要養成良好的習慣啊。
typedef structman//定義了乙個結構體man
man;//結構體變數man
intmain()
;//對模組的引用
man man2 = ;
man man3 = ;
printf(
"%d\n
",man1.age);
printf(
"%d\n
",man3.score);
}
2、結構體中的「洞」
結構體中的每乙個模組在記憶體中並不是禁止排列儲存的,而是上下對齊儲存。這種現象叫做記憶體對齊。這樣做的目的是為了是處理器能夠更快速的進行定址,執行速度更快。以空間換取時間。
看來魚與熊掌還是不能兼得啊。既然是上下對齊的,那麼並不是每個模組都能準確的填滿一行的記憶體空間。那麼沒有被填滿的記憶體空間就造成了空洞。
這樣的話,在檢視結構體所佔的空間時,就不能把每個模組所分別佔的記憶體空間簡單的相加。因為他們中間存在空洞。
3、在c語言中文網裡面對結構體進行了詳細的講解:
包括結構體陣列,結構體指標。
4、列舉
在實際程式設計中,有些資料的取值往往是有限的,只能是非常少量的整數,並且最好為每個值都取乙個名字,以方便在後續**中使用,
比如乙個星期只有七天,一年只有十二個月,乙個班每週有六門課程等。這種情況下,使用列舉很有用的。
#include intmain()
;//第乙個賦值後,後面每乙個一次+1
enum week day;//
也可以直接在上面大括號後面加 day
scanf("%d
", &day);
switch
(day)
return0;
}
列舉與結構體
1 結構體和列舉一樣,都是在 的主體外部宣告的。1 using system 2using system.collections.generic 3using system.linq 4using system.text 56 namespace structenum 7 15 struct rou...
結構體 共用體與列舉
part 1 一 結構體型別與程式設計應用 學生的記錄由學號和成績組成。n名學生的資料已在主函式中放入結構體陣列stu中。編寫函式 ndminlist,實現 把分數低的學生資料放在陣列t中,函式返回分數低的學生的人數。注意 分數低的學生可能不止乙個 include const int n 5 定義結...
結構體列舉與聯合
基本介紹 struct是結構體的關鍵字,它將一些相關聯的資料打包成乙個整體,這些相關聯的資料可以是不同的型別。它們被稱為結構體的成員,結構體的成員可以是標量 陣列 指標 或者是其他結構體。結構的宣告 假設我們要建立學生檔案,要納入學生的姓名,年齡和性別三個內容。那麼我們可以通過建立乙個結構體來實現這...