一道C++的函数选择题 要求详细解答

设变量a和b 已在主函数中定义,对于函数 int count(int x,int w){……}以下描述不正确的是( )
A。调用函数时,可以使用语句a=count(2*a+b , 0)
B.调用语句count(a,b)调用函数时,实参b和虚参w共用一个内存单元
C.调用语句count(a,b)调用函数时,系统为虚参x和w各分配一个整型单元。
D。如果a和b 是double型,函数count(a,b)仍能执行,但a和b的下属将被忽略,只将其整数部分传给w和x

首先 答案是B

为什么?
因为,c++的规定就是,当函数的参数是值类型的时候,传递的是值,而不是地址,所以会为这个传来的值 新分配一个地址单元。

在这里的实际参数a本来已经有一个地址单元了,然后根据上面这个c++的规定,所以会为a的值另外分配一个地址单元,变量名是w。

不过 这个“&”符号你要去学习一下,这个是传递引用,也就是传递的同一个内存单元。

例子1 (值传递)
int count(int number) //函数定义 没实际意义演示而已
{ return number;}
int a = 1;//这个时候 内存里面有一个地址a 值为1

调用count(a); //这个时候内存里面有一个地址a 和 number

例子2 (引用传递)
int count(int &number) //函数定义 没实际意义演示而已
{ return number;}
int a = 1;//这个时候 内存里面有一个地址a 值为1

调用count(a); //这个时候内存number的地址就是a的地址,所以用引用才是共用一个内存单元
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-01-09
错误的是B
第2个回答  2011-01-09
B不正确
其实有点儿问题,得有a、b的类型才好说,假设a、b都是int型吧,a、b如果都为类类型肯定都错吧,接着说
A:a为变量,可作左值,函数返回值int,可做右值,参数可为表达式,正确
B:值传递,形参、实参肯定不是同一内存,count函数执行时,根据传入的参数临时开辟两个int
C:同B,则C对
D:数据类型的隐式转换,double转int,截掉小数部分
第3个回答  2011-01-09
B 是错误的

因为 实参 与 虚参 不可能用用一个 存储党员 因为这是一个值复制的过程

如果是地址传递 就是 共用一个内存单元

应该是这样定义 count函数
int count(int *x,int *w){……}
传入一个地址

调用时 count(&a,&b) 这就共用一个存储单元了
相似回答