有以下程序    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()    { i

admin2009-03-17  67

问题 有以下程序    struct S { int n;int a[20];};    void f(int *a,int n)    { int i;      for(i=0;i<n-1;i++)a+=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);    }    程序运行后的输出结果是

选项 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个元素分别加上该元素的下标,作为新的元素。
转载请注明原文地址:https://jikaoti.com/ti/vpK0FFFM
0

最新回复(0)