作者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