(一)結構體:宣告乙個結構體型別的一般形式為:
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 語句定義了乙個新...