联合体和结构体最大的区别是:
结构体各个成员都有自己的内存空间
联合体所有的成员共用同一个内存空间,空间的大小取决于所有成员中占用内存空间最大的那个。
放一段代码:
#include <stdio.h> #include <stdlib.h> typedef union _m { int c; char name[20]; }M; int main() { system("color 2E"); printf("联合体 M 占用的内存大小 : %d\n" , sizeof(M)); return 0; }
其结果为:
实际上可以这么理解 : union在同一时间只能使用其所有成员中的一个成员。
如果使用union , 赋值一个成员 , 因为union中所有的成员都使用同一块内存空间 , 实际上其他成员的内存内容也改了 , 再去使用其他成员的话,值都是乱七八糟的。
时间: 2024-12-18 20:01:44