问题 单项选择题

有以下程序
point(char *p) p+=3;
main()
char b[4]='a','b','c','d',*p=b;
point(p); printf("%c\n",*p);

程序运行后的输出结果是______。

A.a

B.b

C.c

D.d

答案

参考答案:A

解析: 本题考查的是函数传值调用。在C语言中,传值调用是将实参的值复制一份作为函数的形参。在函数中,改变形参不会影响到实参。而对于传址调用,函数改变的是形参指针变量所指内存中的值。实际上,还是将实参指针的值复制了一份给形参指针变量,它们是两个独立的变量,只不过指向同一个内存地址。本题的函数只是改变了形参指针变量p的值,对于实参没有任何影响,虽然函数参数是指针,但函数内部并未对指针所指内容进行操作,所以,实际上是传值调用。所以主函数中的p始终指向b[0],最后输出的是“a”,选项A正确。

单项选择题
名词解释