问题 单项选择题

有以下程序:
void f(int *q)
int i=0;
for(;i<5;i++)(*q)++;

main()
int a[5]=1,2,3,4,5,i;
f(a);
for(i=0;i<5;i++) printf("%d,",a[i]);

程序运行后的输出结果是

A) 2,2,3,4,5,
B) 6,2,3,4,5,
C) 1,2,3,4,5,
D) 2,3,4,5,6,

答案

参考答案:B

解析: 本题考查的是指针作为函数的参数和函数的调用。题目中定义了一个指针变量作为函数f()的形参。主函数main()中调用f()函数,当i=0时,执行语句(*q)++,此处*q代表的就是数组元素a[0]的值,即将1进行加1操作;当i=1时,q仍指向数组元素a[0]的地址,因为在函数f()中并未对指针变量q作任何变动,也即*q仍代表了数组元素a[0]的值,所以此次(*q)++即2+1,所以a[0]的值变为3;……直到i=4时,执行(*q)++(即5+1)后a[0]的值变为6。所以最后的输出结果为:6,2,3,4,5,。

选择题
多项选择题 案例分析题