有下列程序
#include< stdio.h >
int*f(int*s)
{s+=1;
s[1]+=6;
*s+++=7;
return s;
}
main()
{int a[5]={1,2,3,4,5},*p;
p=f(&a[1]);
printf("%d,%d,%d,%d",a[1],a[2],*p,P[1]);
}
程序执行后的输出结果是( )。
【正确答案】
C
【答案解析】程序main()函数中首先定义整型数组a和整型指针p,数组a包含5个元素:1,2,3,4,5。然后将数组第2个元素2的地址&a[1]传给函数f(),形参s接收了此地址,然后将s指针向后移动一个单位,此时s指向数组a的第2个元素,即3。然后将此时s指向的后一个元素累加6,并将s指向的元素累加7后,s再次后移一位,指向数组a的第4个元素,最后将8的值返回赋给p,所以f()函数调用后,a数组中的元素分别为:1,2,10,10,5,p指向第4个元素,所以输出a[1]为2,a[2]为10,*p为10,p[1]为5,本题答案为C。