国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

詳解C語言結構體、枚舉、聯(lián)合體

fou7 / 943人閱讀

摘要:如下面的結構體包含三個成員,分別是。聯(lián)合體是一種結構。其對其方式適合其中所有成員。

1.什么是結構體、枚舉、聯(lián)合體

結構體(struct)是由一系列具有相同類型或不同類型的數(shù)據(jù)項構成的數(shù)據(jù)集合,這些數(shù)據(jù)項稱為結構體的成員。如下面的student結構體包含三個成員,分別是name、num、age。

枚舉(enum)是C語言的一種特殊類型。當我們在編程中遇到定義一些固定長度或范圍的數(shù)值時,可以考慮使用枚舉類型。使用枚舉可以讓我們的程序可讀性更強、看起來更加直觀。舉個例子,如果我們在編程中需要使用數(shù)字06分別表示星期日星期六,程序的可讀性就不高,我們需要翻手冊或者看程序注釋才能知道每個數(shù)字具體代表什么意思。如果我們使用枚舉呢,基本上不需要看注釋或手冊就可知曉其大意。

聯(lián)合體是一種結構。
它的所有成員相對于基地址的偏移量都是0。
此結構空間要大到足夠容納最寬的成員。
其對其方式適合其中所有成員。

// 創(chuàng)建結構體struct student{  char *name;  // 學生名字  int num;     // 學生學號  int age;     // 學生年齡};

2.定義結構體

struct tag{	成員變量...}variable;

通常,tag、結構體成員變量、variable這3個部分至少要出現(xiàn)2個

2.1 包含結構體成員變量、variable

struct{	char name[100];	int age;}s1;//s1相當于對這個結構體聲明了一個變量,可以在程序中直接調(diào)用

s1相當于聲明的全局變量。

2.2 tag、結構體成員變量

struct person{	char name[100];	int age;};

2.3 用結構體聲名變量

struct person p1,p2[5],*p3

2.4 用typedef 創(chuàng)建新類型

typedef struct {	char name[100];	int age;} person;
//用新定義的person類型定義變量person p1,p2[5],*p3

2.5 兩個結構體相互包含

struct B;				//需先對結構體B進行聲明,不然聲明A時編譯無法通過struct A{	struct B *partner;	//other members;};struct B{	struct A *partner;	//other members;};

2.6 結構體變量初始化

#include  struct persons {    char name[100];    int age;}person = {"chuhe",18};int main(){    printf("%s,%d", person.name, person.age);    return 0;}

2.7 結構體指針

#include  typedef struct persons {    char name[100];        int age;}persons;int main(){    struct persons p = { "chuhe",18 };    printf("%s,%d/n", p.name, p.age);    persons* p1 = &p;//定義結構體指針    printf("%s,%d/n", p1->name, p1->age);    return 0;}

3.枚舉

3.1 定義方式

enum 枚舉名{元素1,元素2};

3.2 為什么用枚舉

#define MON  1#define TUE  2#define WED  3#define THU  4#define FRI  5#define SAT  6#define SUN  7

例如上式,定義非常麻煩,此時便可以用枚舉

enum DAY{MON=1,TUE,WED, THU, FRI, SAT, SUN};

注意:第一個枚舉成員的默認值為整型的 0,后續(xù)枚舉成員的值在前一個成員上加 1。我們在這個實例中把第一個枚舉成員的值定義為 1,第二個就為 2,以此類推

3.3 枚舉變量的定義

enum DAY{MON=1,TUE,WED,THU,FRI};enum DAY day;enum DAY{MON=1,TUE,WED,THU,FRI}day;//也可以在定義枚舉類型時一起定義enum{MON=1, TUE, WED, THU, FRI, SAT, SUN}day;//可以省略枚舉名稱

3.4 實例

#include enum DAY{      MON=1, TUE, WED, THU, FRI, SAT, SUN};int main(){    enum DAY day;    day = WED;    printf("%d",day);    return 0;}

3.5 枚舉實際用途

#include #include int main(){    enum color { red=1, green, blue };    enum  color favorite_color;    printf("請輸入你喜歡的顏色: (1. red, 2. green, 3. blue): ");    scanf("%u", &favorite_color);    switch (favorite_color){    case red:        printf("你喜歡的顏色是紅色");        break;    case green:        printf("你喜歡的顏色是綠色");        break;    case blue:        printf("你喜歡的顏色是藍色");        break;    default:        printf("你沒有選擇你喜歡的顏色");    }    return 0;}

4.聯(lián)合體

通過前面的講解,我們知道結構體(Struct)是一種構造類型或復雜類型,它可以包含多個類型不同的成員。在C語言中,還有另外一種和結構體非常類似的語法,叫做共用體(Union),它的定義格式為:

union 共用體名{    成員列表};

4.1 與結構體區(qū)別

結構體和共用體的區(qū)別在于:結構體的各個成員會占用不同的內(nèi)存,互相之間沒有影響;而共用體的所有成員占用同一段內(nèi)存,修改一個成員會影響其余所有成員。

4.2 定義

union data{    int n;    char ch;    double f;};union data a, b, c;

共用體 data 中,成員 f 占用的內(nèi)存最多,為 8 個字節(jié),所以 data 類型的變量(也就是 a、b、c)也占用 8 個字節(jié)的內(nèi)存,請看下面的演示:

#include union data{    int n;    char ch;    short m;};int main(){    union data a;    printf("%d, %d/n", sizeof(a), sizeof(union data) );    a.n = 0x40;    printf("%X, %c, %hX/n", a.n, a.ch, a.m);    a.ch = "9";    printf("%X, %c, %hX/n", a.n, a.ch, a.m);    a.m = 0x2059;    printf("%X, %c, %hX/n", a.n, a.ch, a.m);    a.n = 0x3E25AD54;    printf("%X, %c, %hX/n", a.n, a.ch, a.m);       return 0;}

運行結果:
4, 4
40, @, 40
39, 9, 39
2059, Y, 2059
3E25AD54, T, AD54

文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/121417.html

相關文章

  • C語言中還有這些類型,別再說你不知道了!手把手帶你解鎖C語言中的自定義類型,讓你寫你所想。

    摘要:結構體類型的特殊聲明在初階結構體中,我們已經(jīng)將了結構體類型是如何進行聲明的,那么在這里,我們將講一些特殊的結構體聲明不完全的聲明。所以我們應該這樣寫通過指針來找到下一個同類型結構體的寫法,我們就稱之為結構體的自引用。 ...

    hizengzeng 評論0 收藏0
  • C語言進階】自定義類型(2)枚舉&聯(lián)合

    目錄 一、枚舉 (一)枚舉類型的定義 (二)使用枚舉的原因? (三)枚舉的優(yōu)點? (四)枚舉的大小 (五)枚舉的使用 二、聯(lián)合(共用體) (一)聯(lián)合類型的定義 (二)聯(lián)合的特點 (三)面試題 (四)聯(lián)合大小的計算 一、枚舉 枚舉顧名思義就是:列舉?。? ?即把可能的取值一一列舉出來。 比如我們現(xiàn)實生活中: 一周當中從周一至周日的7天,可以一一列舉;性別有:男、女、保密,可以一一列舉;月份有...

    leiyi 評論0 收藏0
  • PHP_底層分析

    摘要:將會產(chǎn)生強制分裂結構體結構體引用數(shù)組時的一些奇怪現(xiàn)象引用數(shù)組時的怪現(xiàn)象數(shù)組不會比較細致的檢查,多維數(shù)組存在。因此,判斷的時候,只會判斷外面一層的結構體。中底層都離不開表。底層所有的變量都是放在中。 PHP編譯特點 編譯型語言 對于C語言,C++,編譯成機器碼(二進制)來運行。Java語言,把.java 編譯成.class, 稱為bytecode(字節(jié)碼),由jvm來運行 解釋型語言 解...

    tomlingtm 評論0 收藏0
  • 2021-09-05_user_defined_data_types(自定義數(shù)據(jù)類型)

    摘要:如果嵌套了結構體的情況,嵌套的結構體對齊到自己的最大對齊數(shù)的整數(shù)倍處,結構體的整體大小就是所有最大對齊數(shù)含嵌套結構體的對齊數(shù)的整數(shù)倍。 user_defined_d...

    liaosilzu2007 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<