问题 单项选择题

若有以下程序: #include<iostream> usingnamespacestd; voidsub(intx,inty,int*2) { *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为voidf型。函数的形参中,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被赋值12。以此类推,最后b被赋值18,c被赋值30。所以最后输出是12, 18, 30。

填空题
单项选择题