一道C++的函数选择题 要求详细解答
设变量a和b已在主函数中定义,对于函数intcount(intx,intw){……}以下描述不正确的是()A。调用函数时,可以使用语句a=count(2*a+b,0)B....
设变量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 展开
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的地址,所以用引用才是共用一个内存单元
为什么?
因为,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的地址,所以用引用才是共用一个内存单元
展开全部
错误的是B
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
B不正确
其实有点儿问题,得有a、b的类型才好说,假设a、b都是int型吧,a、b如果都为类类型肯定都错吧,接着说
A:a为变量,可作左值,函数返回值int,可做右值,参数可为表达式,正确
B:值传递,形参、实参肯定不是同一内存,count函数执行时,根据传入的参数临时开辟两个int
C:同B,则C对
D:数据类型的隐式转换,double转int,截掉小数部分
其实有点儿问题,得有a、b的类型才好说,假设a、b都是int型吧,a、b如果都为类类型肯定都错吧,接着说
A:a为变量,可作左值,函数返回值int,可做右值,参数可为表达式,正确
B:值传递,形参、实参肯定不是同一内存,count函数执行时,根据传入的参数临时开辟两个int
C:同B,则C对
D:数据类型的隐式转换,double转int,截掉小数部分
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
B 是错误的
因为 实参 与 虚参 不可能用用一个 存储党员 因为这是一个值复制的过程
如果是地址传递 就是 共用一个内存单元
应该是这样定义 count函数
int count(int *x,int *w){……}
传入一个地址
调用时 count(&a,&b) 这就共用一个存储单元了
因为 实参 与 虚参 不可能用用一个 存储党员 因为这是一个值复制的过程
如果是地址传递 就是 共用一个内存单元
应该是这样定义 count函数
int count(int *x,int *w){……}
传入一个地址
调用时 count(&a,&b) 这就共用一个存储单元了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询