本帖最后由 jackz007 于 2020-3-23 17:56 编辑
在这个共用体 e 中,一共有 3 个元素,e . in、e . a、e . b,既然是共用体,那么,这 3 个元素实际上是指向同一个内存地址的。3 个元素中,比较特殊的是 e . in,它是一个结构,这个结构含有 2 个 int 成员,实际上可以视为一个有 2 个元素的一维整型数组,这样的话,共用体 e 指向相同地址的 3 个元素分别是 e . in . x、e . a、e . b,就是说,这 3 个元素实际上是拥有三个不同标识符的同一个整型数,关于这一点,通过下面的代码很容易看出效果:#include <stdio.h>
main ()
{
union A
{
struct
{
int x ;
int y ;
} in ;
int a ;
int b ;
} e ;
e . a = 1234 ;
printf("e . in . x = %d\n" , e . in . x) ;
printf("e . in . y = %d\n" , e . in . y) ;
printf("e . a = %d\n" , e . a) ;
printf("e . b = %d\n" , e . b) ;
e . in . x = 5678 ;
printf("e . in . x = %d\n" , e . in . x) ;
printf("e . in . y = %d\n" , e . in . y) ;
printf("e . a = %d\n" , e . a) ;
printf("e . b = %d\n" , e . b) ;
}
编译、运行实况C:\Bin>g++ -o x x.c
C:\Bin>x
e . in . x = 1234
e . in . y = 40099964
e . a = 1234
e . b = 1234
e . in . x = 5678
e . in . y = 40099964
e . a = 5678
e . b = 5678
C:\Bin>
|