位置:首頁(yè) > 軟件操作教程 > 編程開發(fā) > C語(yǔ)言 > 問題詳情

C語(yǔ)言 共用體變量的引用

提問人:劉團(tuán)圓發(fā)布時(shí)間:2020-12-02

    對(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

繼續(xù)查找其他問題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部