选择题

有以下程序
#include
void f(int *p);
main()
{
   int a[5]={1,2,3,4,5},*r=a;
   f(r);
   printf("%d\n",*r);
}
void f(int *p)
{
   p=p+3;
   printf("%d,",*p);
}
程序运行后的输出结果是(     )。

【正确答案】 D
【答案解析】

在调用 f 函数时, 形参 p 通过传递参数指向了数组 a 的起始地址, 执行语句“p=p+3;” 后指向了 a[3]的地址, 所以输出 4; 主函数中, 指针 r 仍指向数组 a 的首地址, 所以输出 1。 答案选择 D 选项。