一、結構體和共用體的定義
結構體關鍵字爲struct,共用體關鍵字爲union數組
/** * 定義一個person的結構體,要';'結束 */ struct person{ char name[20]; //姓名 char sex[10]; //性別 int age; //年齡 float height; //身高 float weight; //體重 }; /** * 定義一個people共用體 */ union people{ char name[20]; int age; };
二、結構體和共用體的聲明markdown
結構體和共用體的三種聲明是一致的:ide
void mian(){ //結構體的聲明 //通常聲明 struct person p1; union people pe1; //直接聲明 struct person{ char name[20]; int age; }p2; union people{ char name[20]; int age; }pe2; //匿名聲明,此方式該結構體只能聲明一次 struct{ char name[20]; int age; }p3; union{ char name[20]; int age; }pe3; }
三、結構體和結構體變量的使用函數
3.一、對結構體成員的使用指針
/** * 定義一個結構體,並聲明結構體對象p1 */ struct person{ char name[20]; int age; }p1; void main(){ //初始化結構體 p1 = {"zack", 20}; //訪問結構體成員的三種方法 //一、結構體變量名.成員名 p1.name printf("%s", p1.name); //二、指針變量名->成員名 //三、(*指針變量名).成員名 }
四、結構體變量的初始化code
前面已經瞭解瞭如何賦值,而後弄一個稍微複雜一點的結構體賦值:對象
/** * 定義一個生日的結構體 */ struct birthday{ int year; int month; int day; }; /** * 定義一個person結構體,以結構體birthday做爲成員變量 */ struct person{ char name[20]; int age; struct birthday date; }p; void main(){ //初始化person,若是成員變量爲結構體,使用{}賦值 p = {"zack", 20, {1999, 12, 1}}; }
五、結構體數組定義及初始化內存
/** * 定義結構體並聲明數組 */ struct person{ char name[20]; int age; }p[2]; void main(){ //初始化結構體數組 p = {{"zack", 20}, {"Rudy", 19}}; }
六、結構體和函數get
結構體能夠做爲函數參數it
/** * 定義一個結構體 */ struct person{ char name[20]; int age; }; /* 聲明一個函數 */ void demo(struct person p); void main(){ //初始化結構體 struct person p = {"zack", 20}; //將結構體做爲參數傳入demo函數 demo(p); } /** * 定義一個函數,接收結構體,並把結構體信息輸出 */ void demo(struct person p){ printf("姓名:%s\n", name); printf("年齡:%d", age); }
七、結構體和共用體的區別
結構體在建立時,按照結構體成員變量佔的內存分配。而共用體則按照共用體中,所佔內存最大的變量分配內存。因此,共用體變量只能單個使用,而結構體能夠全部變量一塊兒使用。
https://mp.weixin.qq.com/s/THf1-T8A2RaoF1xIQ4No1A