struct和unin

先看一个关于struct的例子:

struct student

{

    char mark;

    long num;

    float score;

};

 struct student test;

mark内存大小:1,num内存为8,score内存为4;test内存为24。

将struct换成unin则内存大小为:test内存为8,且mark、num和score的内存地址都相同

因为共用体将一个char类型的mark、一个long类型的num变量和一个float类型的score变量存放在同一个地址开始的内存单元中,这种使几个不同的变量共占同一段内存的结构,称为“共用体”。

不能如下使用:union test a;

printf("%d", a);//错误

printf("%d", a.mark); //正确

由于a的存储区有好几种类型,分别占不同长度的存储区,仅写共用体变量名a,这样使编译器无法确定究竟输出的哪一个成员的值。

你可能感兴趣的:(struct和unin)