一,結構體的概念和定義
1,結構體的定義
struct 結構體名
;這裡資料型別可以是復合型別,例如又是乙個結構體型別,即巢狀;
2,結構體變數的定義
struct 結構體名 變數名1,變數名2,,,變數名n;
或:struct 結構體名
結構體變數1,結構體變數2;
或:struct
結構體變數1,結構體變數2;
三種方式,第三種方式的話,每次要定義這個型別的結構體變數都要重複的寫這
一段**;
其實定義了結構體後,struct 結構體名就是一種新的型別,上述語句就像宣告
變數一樣;
3,結構體變數的引用
只能對結構體變數中的各個成員分別輸出,不能對乙個結構體變數作為乙個整體
輸出;巢狀的結構體型別的引用:
結構體變數名.結構體型別成員名.內嵌結構體的成員名;
4,結構體變數的初始化
struct 結構體名 變數名 = ;
或者在定義的時候就初始化:
struct 結構體名
變數名 = ;
二,結構體陣列
1,結構體陣列的定義舉例
struct stu
;struct stu student[5];
或者:struct stu
student[5];
或者:struct
student[5];
跟定義結構體變數的三種形式是一樣的,只不過這裡每次定義的結構體變數是一
個陣列;每乙個student[i]都是struct stu型別的;
2,結構體陣列的初始化和引用
略;三,結構體與指標
1,指向結構體的指標的定義,同上,也是三種形式;
struct employees employee1,*p1;
或者:struct employees
employee1,*p1;
或者:struct
employee1,*p1;
2,用結構體變數指標來引用結構體成員的兩種操作:
(*結構體變數的指標名).成員名;
如:(*p1).name;括號不能省略,.的優先順序是最高的;
或:結構體變數的指標名->成員名;
如:p1->name;
注意.和->的優先順序是最高的;
employee1.name;
(*p1).name;
p1->name;
是等價的;
3,結構體陣列與指標
struct stu
student[5],*p;
此時可以
p = student;此時p指向student[0];
(2)也可把student的其他元素的位址賦給p
p = &student[3];
(3)利用指標移動如p++使p指向結構體陣列的不同元素;
四,結構體作為函式引數
1,結構體變數作為函式引數
2,指向結構體變數的指標作為函式引數
略,在後續文章裡將給出乙個例子;
五,共用體(聯合體)
它可以表示幾種不同型別的變數共用同一起始位址的記憶體單元,其定義形式,變
量說明,引用方式都類似於結構體,本質差別在於兩者的儲存方式不一樣:結構
體變數的各個成員變數在儲存時,各佔不同起始位址的記憶體單元,而共用體的各個成員在儲存時,共用同一起始位址的儲存單元;
1,共用體的定義
三種方式和結構體一樣
union data
;union data a,b,c;
或者:union data
a,b,c;
或者:union
a,b,c;
在型別定義時,系統並未給共用體分配具體的儲存空間,只有當定義了這種共用
體型別的變數時,系統才為這種共用體型別的變數分配空間;乙個共用空間的大
小相同,大小為成員項中佔空間最大的那乙個;
2,共用體變數的引用
union data a,*p;
其引用形式:
a.i;a.f;a.ch;或者
p = &a;p->=5;p->=4.3;p->='a';
由共用體的儲存特性,知道&a,&a.i,&a.f,&a.ch都是同乙個值;
c規定,不能把共用體變數作為函式引數或函式返回型別;
在某一時刻,共用體的儲存空間只能儲存乙個成員的資料,在給不同的成員資料
賦值時,要注意最後引用的時候儲存的是哪乙個成員變數;
如下面的賦值就是不對的:
union
a = ;一次只能給乙個成員賦值,且共用體空間儲存的是最後的那個成員的值;
另外,共用體也能巢狀,也可定義共用體陣列,在這裡不再詳述,形式和結構體一樣;
結構體與共用體
1.定義乙個機構體的形式 struct 結構名 2.定義結構體變數 變數名表列 變數名表列 3.結構體成員的表示方法 結構變數名.成員名 例如 boy1.num 如果成員本身又是乙個結構則必須逐級找到最低階的成員才能使用。例如 boy1.birthday.month 4.結構體陣列 方法和結構變數相...
結構體與共用體
結構體的作用 在網路協議 通訊控制 嵌入式系統的c c 程式設計中,我們經常要傳送的不是簡單的位元組流 char型陣列 而是多種資料組合在一起的乙個整體。其表現形式是乙個結構體。簡單來說,結構體就是用來封裝資料的。結構體的定義 struct student struct student stu st...
結構體與共用體
結構體和共用體 聯合體 是自定義的資料型別,常用於處理非數值型資料,使用如 鍊錶 佇列 樹等。1.結構體定義 結構體是用其他型別構造出來的資料型別。結構體型別如下 struct student 定義乙個結構體變數如下 struct student stu1 stu1.age 32 stu1.name...