早教吧 育儿知识 作业答案 考试题库 百科 知识分享

2级问题有以下程序#include<stdio.h>voidf(int*p);main(){inta〔5〕=解释一下为什么这个是传值调用而不是传地址调用???(29)有以下程序#include<stdio.h>voidf(int*

题目详情
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(“%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、本题考察函数值传递的问题。f函数参数为指针,容易让人误解为传址的问题,但实际上只是简单传值问题,调用后实参没有改变。故答案选D。(这是完整的)
▼优质解答
答案和解析
答案选d
你调用的时候,传到函数f的是指针r的指针值,不是传递指针r的地址,如果要改为传递地址的话,应该这样:
void f(int **p) { *p = *p +3; },main中调用改为:f(&r); 当然,函数f的声明跟着一起改了就是了,这样的输出结果则是b