你先搞清楚类型和实例化对象的区别:struct s {int x,y,z;}; 这是定义了一个结构体类型s,你可以像int x;一样实例化/声明/定义一个新变量:s object; struct {int x,y,z} s;这是定义了一个没有类型名的结构体变量,变量名是s。 你的代码:第一个:声明了一个union类型,类型名为m。m类型中有一个int类型的变量,还声明了m作用域下的一个s结构体类型,但没有实例化,也没有实际内存对应它。 第二个:你声明了一个union类型的变量m,变量名为m,没有类型名。该变量m中有一个变量名为s的结构体变量和一个int变量a。这个结构体变量s和int变量a共用一块内存栈空间。 还有一个区别:第一个sizeof是对类型取的,第二个sizeof是对实例化的对象取的。
1 1

相关推荐

牛客网
牛客企业服务