问题
单项选择题
有以下程序 struct S { int n;int a[20];}; void f(int *a,int n) { int i; for(i=0;i<n-1;i++)a[i]+=i; } main() { int i;struct S s={10,{2,3,1,6,8,7,5,4,10,9}}; f(s.a,s.n); for(i=0;i<s.n;i++)printf("%d,",s.a[i]); } 程序运行后的输出结果是
A.2,4,3,9,12,12,11,11,18,9,
B.3,4,2,7,9,8,6,5,11,10,
C.2,3,1,6,8,7,5,4,10,9,
D.1,2,3,6,8,7,5,4,10,9,
答案
参考答案:A
解析: 本题中,在调用函数时将结构体变量的两个成员作为实参,其中的成员数组a实际向函数f()传递的是该数组的地址,因此在函数f()中所对应的形参发生改变时,该数组内的数据也会发生改变。函数f()实现的功能是将成员数组中的前9个元素分别加上该元素的下标,作为新的元素。