剛百度了一下,雖然網上有不少優秀的博客詳細的介紹告終構體的使用用注意事項。看了別人的,一度讓我不想在寫本身的博客了。網上都有那麼好的了,我爲何還要畫蛇添足呢。html
可是轉念一想,別人寫的畢竟是別人寫的,那是別人的,雖然我能看懂,也能爲我所用,但始終不是從本身腦子裏一點點想出來的,不是本身手指在鍵盤上一個字一個字的敲出來的。編程
因此儘管本身都知道了,可是仍是本身寫出來,總結出來,纔算真正本身的東西。數組
好了,下面來聊一下結構體是什麼吧。spa
一、首先它是一個體。.net
既然是一個體,裏面確定有不少互相做用的小模塊。就是這樣,結構體裏能夠定義不少不一樣數據類型的模塊,字符串,數組,指針,整型,浮點數等等。指針
定義告終構體,咱們就能夠定義結構體變量,用開引用結構體中的小模塊。典型的例子就是學生信息管理系統。code
關於結構體的定義呢,咱們仍是採用經常使用的方式,用typedef來定義結構體,方便後面定義結構體變量。必定要養成良好的習慣啊。htm
typedef struct Man//定義了一個結構體Man { int age; int score; }man;//結構體變量man int main() { man man1 = {20,80};//對模塊的引用 man man2 = {30,70}; man man3 = {40,99}; printf("%d\n",man1.age); printf("%d\n",man3.score); }
二、結構體中的「洞」blog
結構體中的每個模塊在內存中並非禁止排列存儲的,而是上下對齊存儲。這種現象叫作內存對齊。這樣作的目的是爲了是處理器可以更快速的進行尋址,執行速度更快。以空間換取時間。內存
看來魚與熊掌仍是不能兼得啊。既然是上下對齊的,那麼並非每一個模塊都能準確的填滿一行的內存空間。那麼沒有被填滿的內存空間就形成了空洞。
這樣的話,在查看結構體所佔的空間時,就不能把每一個模塊所分別佔的內存空間簡單的相加。由於他們中間存在空洞。
三、在c語言中文網裏面對結構體進行了詳細的講解:http://c.biancheng.net/cpp/html/93.html
包括結構體數組,結構體指針。
四、枚舉
在實際編程中,有些數據的取值每每是有限的,只能是很是少許的整數,而且最好爲每一個值都取一個名字,以方便在後續代碼中使用,
好比一個星期只有七天,一年只有十二個月,一個班每週有六門課程等。這種狀況下,使用枚舉頗有用的。
#include <stdio.h> int main() { enum week{ Mon = 1, Tues, Wed, Thurs, Fri, Sat, Sun };//第一個賦值後,後面每個一次+1 enum week day;//也能夠直接在上面大括號後面加 day scanf("%d", &day); switch(day) { case 1: puts("Monday"); break; case 2: puts("Tuesday"); break; case 3: puts("Wednesday"); break; case 4: puts("Thursday"); break; case 5: puts("Friday"); break; case 6: puts("Saturday"); break; case 7: puts("Sunday"); break; default: puts("Error!"); } return 0; }