作者HudsonE (象象共和國國王)
看板C_and_CPP
標題Re: [問題] 請問union和call by value問題
時間Sun Feb 8 22:03:18 2009
※ 引述《liptonbin (CATWILLFLY)》之銘言:
: 請問一下
: union structure{
: unsigned short a;
: unsigned short b[2];
: unsigned short c;
: } data;
: int d,e;
: data.a=2;
: data.c=4;
: d=data.a;
: 為什麼算出來d=4 ?
union :
a---+
__ __ __ __
c---+
b---------+
: 和
: void func(int b[])
: {
: b[0]=6;
: }
: main()
: {
: int a,b[5];
: a=4; b[0]=3;
: func(b);
: printf("%d \n",b[0]);
: }
: 這不是call by value嗎 那怎麼結果是6呢 (而不是依造call by value 得到3)_
: 謝謝
b : 0x89abcdef
func( 0x89abcdef)
{
*0x89abcdef = 6
}
--
我是大象
永遠的大象...
象象共和國國王 .
Hudson
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.73.243.167
1F:推 hilorrk:第一個是union的特性 共用空間 第二個因為陣列本身就是個 02/09 01:48
2F:→ hilorrk:指標 所以自然是call by reference 02/09 01:49
3F:→ hilorrk:這位前輩講的超底層XD 02/09 01:50