C語言 共用體變量的引用
對(duì)于共用體變量不能整體引用,只能引用共用體變量的某個(gè)成員,引用方式與引用結(jié)構(gòu)體變量成員相似,對(duì)于共用體成員可以賦值、輸入、輸出、計(jì)算等。例如:
union data
{
int a;
int b;
int c;
};
main()
{
union data u1;
u1.a=10;
u1.b=15;
u1.c=u1.a+u1.b;
printf("%d,%d,%d\n",u1.a,u1.b,u1.c);
}
程序分析:定義一個(gè)共用體data,其中含三個(gè)成員a、b、c,用共用體data定義變量u1,并分別為u1的各個(gè)成員u1.a、u1.b、u1.c賦值。最后輸出的結(jié)果是什么呢?
假設(shè)為共用體變量u1分配的內(nèi)存空間為2000,則u1中的各個(gè)成員a、b、c在內(nèi)存中的首地址全部都是2000。程序執(zhí)行過程如下:
①先為u1.a賦值10,2000開始地址段中存入10。
②再為u1.b賦值15, 2000地址段中存入15,覆蓋剛存入的10。
③最后計(jì)算u1.a+u1.b,因?yàn)閡1.a、u1.b共用一個(gè)地址,所以u(píng)1.a、u1.b的值全部都是15,相加的結(jié)果為30,將30賦給u1.c,成員c與成員a、b共用地址,所以c的值30又覆蓋了原來存在該地址中的15,輸出u1.a、u1.b、u1.c全部都是30。
程序執(zhí)行,輸出結(jié)果為:
30,30,30
點(diǎn)擊加載更多評(píng)論>>