結構體與枚舉

剛百度了一下,雖然網上有不少優秀的博客詳細的介紹告終構體的使用用注意事項。看了別人的,一度讓我不想在寫本身的博客了。網上都有那麼好的了,我爲何還要畫蛇添足呢。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;
}
相關文章
相關標籤/搜索