結構體與枚舉


剛百度了一下,雖然網上有很多優秀的博客詳細的介紹了結構體的使用用注意事項。看了別人的,一度讓我不想在寫自己的博客了。網上都有那么好的了,我為什么還要多此一舉呢。

但是轉念一想,別人寫的畢竟是別人寫的,那是別人的,雖然我能看懂,也能為我所用,但始終不是從自己腦子里一點點想出來的,不是自己手指在鍵盤上一個字一個字的敲出來的。

所以盡管自己都知道了,但是還是自己寫出來,總結出來,才算真正自己的東西。

好了,下面來聊一下結構體是什么吧。

1、首先它是一個體。

既然是一個體,里面肯定有很多互相作用的小模塊。就是這樣,結構體里可以定義很多不同數據類型的模塊,字符串,數組,指針,整型,浮點數等等。

定義了結構體,我們就可以定義結構體變量,用開引用結構體中的小模塊。典型的例子就是學生信息管理系統。

關於結構體的定義呢,我們還是采用常用的方式,用typedef來定義結構體,方便后面定義結構體變量。一定要養成良好的習慣啊。

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);
}

 

2、結構體中的“洞”

結構體中的每一個模塊在內存中並不是禁止排列存儲的,而是上下對齊存儲。這種現象叫做內存對齊。這樣做的目的是為了是處理器能夠更快速的進行尋址,執行速度更快。以空間換取時間。

看來魚與熊掌還是不能兼得啊。既然是上下對齊的,那么並不是每個模塊都能准確的填滿一行的內存空間。那么沒有被填滿的內存空間就造成了空洞。

這樣的話,在查看結構體所占的空間時,就不能把每個模塊所分別占的內存空間簡單的相加。因為他們中間存在空洞。

 

3、在c語言中文網里面對結構體進行了詳細的講解:http://c.biancheng.net/cpp/html/93.html

包括結構體數組,結構體指針。

 

4、枚舉

在實際編程中,有些數據的取值往往是有限的,只能是非常少量的整數,並且最好為每個值都取一個名字,以方便在后續代碼中使用,

比如一個星期只有七天,一年只有十二個月,一個班每周有六門課程等。這種情況下,使用枚舉很有用的。

#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;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM