选择题
以下程序运行后的输出结果是
#include<stdio.h>
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); }
A、
1,4
B、
4,4
C、
3,1
D、
4,1
【正确答案】
D
【答案解析】
本题解题的关键是:实参和形参之间发生的是单向值传递,形参指针p的指向发生了改变,但并不影响实参指针r的指向。指针r指向数组的第一个元素a[0],并把a[0]的地址传递给形参p,执行'p=p+3;'后,指针p指向元素a[3],输出*p的值即输出元素a[3]的值4。由于形参p的指向发生改变并不影响实参r,所以r仍然指向a[0],*r的值即为元素a[0]的值1。所以程序的输出结果为4,1。
提交答案
关闭