# include void fun (int p) { int d=2; p=d++; printf("%d",p);

问题描述:

# include void fun (int p) { int d=2; p=d++; printf("%d",p);} main() { int a=1; fun(a);
printf("%d\n",a);}是如何执行的?返回的a值(输出)为什么不是2 而是1?
1个回答 分类:综合 2014-10-27

问题解答:

我来补答
printf("%d\n",a);
在主函数中输出a,而被调函数fun并没有返回值的,其类型为void,所以被调函数中的p值无法返回主调函数,他们之间是值传递,非址传递,改成下面两种都可以:
一:
# include
int fun (int p) /*改函数类型为返回int型值*/
{ int d=2;
p=d++;
printf("%d",p);
return p;
}
main()
{ int a=1;
a=fun(a);
printf("%d\n",a);
}
或者
# include
void fun (int *p)
{ int d=2;
*p=d++;
printf("%d",*p);
}
main()
{ int a=1;
fun(&a); /*改为传递变量a的地址,即传址,那么被调函数中改变值主调函数中值也改变*/
printf("%d\n",a); /*因为函数中变量的内存地址是相同的,是同一段内存单元数据*/
}都可以.
希望能够帮到您.
 
 
展开全文阅读
剩余:2000