有以下程序 #include<stdio.h> int*f(int*s) {s+=2; s[1]+=6; *s=7; return s; } main( ) {int a[5]={1,2,3,4,5},*p=a; p=f(p); prinff("%d,%d

admin2019-01-11  20

问题 有以下程序
#include<stdio.h>
int*f(int*s)
{s+=2;
s[1]+=6;
*s=7;
return s;
}
main( )
{int a[5]={1,2,3,4,5},*p=a;
p=f(p);
prinff("%d,%d,%d,%d",a[0],a[1],*p,p[1]);
}
程序执行后的输出结果是(    )。

选项 A、1,2,7,10
B、7,8,7,8
C、1,2,1,2
D、7,10,7,10

答案A

解析 f( )函数接收一个数组a的首地址s,然后将s指针向后移动两个单位,此时s指向数组a的第3个元素,即3,然后将s的后一个元素累加6,s指向的元素赋值为7,并返回s指针赋给实参p,所以f( )函数调用后,a数组中的元素分别为:1,2,7,10,5。执行p:f(p)后,p指向第3个元素,所以输出a[0]为1,a[1]为2,*p为7,p[1]为10,本题答案为A。
转载请注明原文地址:https://kaotiyun.com/show/cpxp777K
0

最新回复(0)