有以下程序:void f(int*q){int i=0;for(;i<5;i++)(*q)++;}main(){int a[5]={1 2 3 4 5} i;f(A);f

计算机 程序 已帮助 人

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

热搜:java int类型的取值范围

答案解析

难度★★☆ 搜索
  • 正确答案: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。