有下列程序 #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]); prinff("

admin2019-01-11  51

问题 有下列程序
#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]);
prinff("%d,%d,%d,%d",a[1],a[2],*p,p[1]);
}
程序执行后的输出结果是(    )。

选项 A、3,9,10,5
B、2,16,4,5
C、2,10,10,5
D、10,9,4,5

答案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个元素,最后将s的值返回赋给p,所以f( )函数调用后,a数组中的元素分别为:1,2,10,10,5,p指向第4个元素,所以输出a[1]为2,a[2]为10,*p为10,p[1]为5,本题答案为C。
转载请注明原文地址:https://kaotiyun.com/show/H7xp777K
0

最新回复(0)