Struct和Union的区别
Struct:结构体
Union:联合体
联合体是几个不同类型的变量共占一段内存(相互覆盖),因为是内存共享,所以它不能同时存放多个成员的值,而只能存放其中的一个值,就是最后赋予它的值,例如:
uni.a=3,uni.b=4.5,uni.c="A";赋值之后共享的同一块内存的值会被覆盖。对于union的不同成员赋值,将会对其它成员重写,原来成员的值就不存在了。union的内存大小为其内部所有成员的最大值。
unionUN{charc;//1inta;//4floatb;//4doubleg;}uni;voidTest(){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);}intmain(){Test();return0;}
联合体的应用:大小端
#include<stdio.h>unionUN{inti;charj;}a;voidTest(){a.i=1;if(a.j==0){printf("大端\n");}else{printf("小端\n");}}intmain(){Test();return0;}
结构体也是由多个不同的数据类型成员组成,但在任何同一时刻,结构体存放所有的成员变量,结构体的不同成员赋值是相互不影响的,它的内存也是按照最大类型的倍数进行分配大小,但还是与顺序有关。
structstudent{char*name;//4intage;//4char*sex;//4charc;intnum;//4doubleb;}d;voidTest(){structstudents;d.age=12;printf("%d\n",sizeof(d));printf("%d\n",d.age);printf("%s\n",d.sex);}intmain(){Test();return0;}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。