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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。