您好,登錄后才能下訂單哦!
Struct:結構體
Union:聯合體
聯合體是幾個不同類型的變量共占一段內存(相互覆蓋),因為是內存共享,所以它不能同時存放多個成員的值,而只能存放其中的一個值,就是最后賦予它的值,例如:
uni.a=3,uni.b=4.5,uni.c="A";賦值之后共享的同一塊內存的值會被覆蓋。對于union的不同成員賦值,將會對其它成員重寫,原來成員的值就不存在了。union的內存大小為其內部所有成員的最大值。
union UN { char c;//1 int a;//4 float b;//4 double g; }uni; void Test() { uni.a = 4; uni.b = 1.5; uni.c = 'f'; printf("%d\n",uni.a); printf("%f\n",uni.b); printf("%c\n",uni.c); } int main() { Test(); return 0; }
聯合體的應用:大小端
#include<stdio.h> union UN { int i; char j; }a; void Test () { a.i=1; if(a.j==0) { printf("大端\n"); } else { printf("小端\n"); } } int main() { Test(); return 0; }
結構體也是由多個不同的數據類型成員組成,但在任何同一時刻,結構體存放所有的成員變量,結構體的不同成員賦值是相互不影響的,它的內存也是按照最大類型的倍數進行分配大小,但還是與順序有關。
struct student { char *name;//4 int age;//4 char *sex;//4 char c; int num;//4 double b; }d; void Test() { struct student s; d.age=12; printf("%d\n",sizeof(d)); printf("%d\n",d.age); printf("%s\n",d.sex); } int main() { Test(); return 0; }
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。