2级问题 有以下程序 #include<stdio.h> void f(int *p); main() {int a〔5

2级问题 有以下程序 #include<stdio.h> void f(int *p); main() {int a〔5〕=
解释一下为什么这个是传值调用而不是传地址调用???
(29)有以下程序
#include<stdio.h>
void f(int *p);
main()
{int a〔5〕={1,2,3,4,5},*r=a;
f(r);printf(“%dn”;*r);

void f(int *p)
{p=p+3;printf(“%d,”,*p);}
程序运行后的输出结果是
A)1,4 B)4,4 C)3,1 D)4,1
【答案与解析】D、本题考察函数值传递的问题。f函数参数为指针,容易让人误解为传址的问题,但实际上只是简单传值问题,调用后实参没有改变。故答案选D。(这是完整的)
ysy995 1年前 已收到1个回答 举报

zhuyingying6 幼苗

共回答了20个问题采纳率:85% 举报

答案选d
你调用的时候,传到函数f的是指针r的指针值,不是传递指针r的地址,如果要改为传递地址的话,应该这样:
void f(int **p) { *p = *p +3; },main中调用改为:f(&r); 当然,函数f的声明跟着一起改了就是了,这样的输出结果则是

1年前

10
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 17 q. 0.080 s. - webmaster@yulucn.com