有以下程序: 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;

admin2011-06-10  32

问题 有以下程序:    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);    }    程序运行后的输出结果是(       )。

选项 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。
转载请注明原文地址:https://kaotiyun.com/show/qCPp777K
0

最新回复(0)