若有以下程序:# include <iostream>using namespace std;void sub(int x, int y, int *z){ *z = y+x;}int main (){ int a,b, c; sub[8

admin2010-12-16  19

问题 若有以下程序:# include <iostream>using namespace std;void sub(int x, int y, int *z){    *z = y+x;}int main (){    int a,b, c;    sub[8,4.&a) ;    sub (6, a, &b) ;    sub (a.b, &c) ;    cout<<a<<" , "<<b<<", "<<c<<end1;    return 0;}     程序运行后的输出结果是

选项 A、12,18,30
B、-12,6,8
C、6,8,10
D、12,-18,16

答案A

解析 本题考核对指针作为函数的参数的理解程度。分析程序:函数sub为void型。函数的形参中,z是一个int型的指针变量,因此它只能从实参接收一个int型变量的地址。在函数 sub体中,语句:*z=y +x;的功能是把形参y与x的和值放入形参z所指的存储单元中。在主函数中,3次调用sub函数。第一次调用时,把8和4分别传递给形参x和y,把主函数中变量a的地址传递给形参z,这样形参就指向了主函数中的变量a,在sub函数中执行语句*z=y/x;后,把12放入z所指的存储单元中,即变量a被赋值11。以此类推,最后b被赋值18,c被赋值30。所以最后输出是12,18,30。
转载请注明原文地址:https://kaotiyun.com/show/uOjp777K
0

最新回复(0)