问题 单项选择题

有以下程序:
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]的地址,也即将q进行加1操作;当i=1时,q仍指向数组元素a[0]的地址,因为在函数f()中并未对指针变量q做任何变动,即*q仍代表数组元素a[0]的值,所以此次(*q)++即为2+1,a[0]的值变为3;直到i=4时,执行(*q)++后a[0]的值变为6,最后输出数组a的结果为6、2、3、4、5。

多项选择题
单项选择题