C語言之結構和聯合

2021-09-10 19:47:44 字數 1938 閱讀 8116

(一)結構體:宣告乙個結構體型別的一般形式為:

struct 結構體名 {成員表列};

如:struct student

;定義結構體型別變數:

1、先宣告結構體型別再定義變數名

例如:struct student student1, student2;

2、在宣告型別的同時定義變數

這種般形式為:

struct 結構體名

{成員表列;

}變數名表列;

3、在定義了結構體變數以後,當然可以引用這個變數。但應遵守以下規則:

(1)不能將乙個結構體變數作為乙個整體進行輸入和輸出。

例如: 已定義student1和student2為結構體變數並且它們已有值。

printf(″%d,%s,%c,%d,%f,%\n″,student1); 錯誤

(2) 可以引用結構體變數成員的位址,也可以引用結構體變數的位址。

例如:scanf(″%d″,&student1.num); (輸入student1.num的值)

printf(″%o″,&student1); (輸出student1的首位址)

4、結構體成員的表現形式:

①結構體變數.成員名

②(*p).成員名

③p->成員名(其中->稱為指向運算子)

(二)用結構體建立鍊錶

struct student

;其中成員num和score用來存放結點中的有用資料(使用者需要用到的資料),next是指標型別的成員,它指向struct student型別資料(這就是next所在的結構體型別)

(三)處理動態記憶體所需的函式:庫函式提供動態地開闢和釋放儲存單元的

有關函式:

1、malloc函式: void *malloc(unsigned int size);

其作用:是在記憶體的動態儲存區中分配乙個長度為size的連續空間。

返回值:是乙個指向分配域起始位址的指標(型別為void)。如果此函式未能成功地執行(例如記憶體空間不足),則返回空指標(null)。

2、 calloc函式 :void *calloc(unsigned n,unsigned size);

作用:在記憶體的動態儲存區中分配n個長度為size的連續空間。

返回值:乙個指向分配域起始位址的指標;

如果分配不成功,返回null。

用calloc函式可以為一維陣列開闢動態儲存空間,n為陣列元素個數,每個元素長度為size。

3、 free函式: void free(void *p);

作用:釋放由p指向的記憶體區,使這部分記憶體區能被其他變數使用。

p是最近一次呼叫calloc或malloc函式時返回的值。

free函式無返回值。

(四)共用體:使幾個不同的變數共占同一段記憶體的結構稱為 「共用體」型別的結構。

定義共用體型別變數的一般形式為:

union 共用體名

{成員表列

}變數表列;

1、共用體和結構體的比較:

①結構體變數所佔記憶體長度是各成員佔的記憶體長度之和。

②每個成員分別占有其自己的記憶體單元。

③共用體變數所佔的記憶體長度等於最長的成員的長度。

2、列舉:將變數的值一一枚舉出來,變數的值只限於列舉出來的值的範圍內。

①、申明列舉型別用enum

enum weekday; 

②定義變數:

enum weekday workday,week-day;

enum{sun,mon,tue,wed,thu,fri,sat}workday;

注:變數值只能是sun到sat之一 。

3、用typedef定義型別的方法:

typedef struct info i

即struct info可以用i表示

C語言之結構體列舉聯合的理解

一 結構體 結構體的定義 結構體是c語言中一種可以自定義的資料型別。結構體就像名字一樣,是一些結構的集合。結構是一些值的聯合,結構的每個成員可以是不同型別的變數。結構體的宣告 有名字的結構體,建立乙個學生結構體 struct stu s 或 struct stu 匿名結構體 struct arr 匿...

C語言之聯合體

聯合體,就是將幾種資料型別聯合起來的一種資料結構,但是它們共用乙個空間。怎麼理解呢?川劇變臉見過沒,就是來來回回的變來變去,給人看的眼花繚亂的,但是不管你怎麼變,面具下的臉卻始終不變。同樣的道理,各種資料型別就是各種臉譜,對外展現了不同的形象,唯一不變的就是它的記憶體空間的二進位制資料始終都是一樣的...

C語言之聯合體Union

共用體是一種特殊的資料型別,允許您在相同的記憶體位置儲存不同的資料型別。您可以定義乙個帶有多成員的共用體,但是任何時候只能有乙個成員帶有值。共用體提供了一種使用相同的記憶體位置的有效方式。定義共用體union 為了定義共用體,您必須使用union語句,方式與定義結構類似。union 語句定義了乙個新...