# 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?

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/28 12:26:28
# include  void fun (int p) { int d=2; p=d++; printf(
xTn@~U+ VI^N$ֵHȥBX6$(i Mش/'^\HSgg>[16EFBhUJCES.2b5b\O ## hX"^)=:Tk V ȧzDG6y|TGo6K%;qKޏx7qؾÎ%l[< ϵMYZ~0̼CWdcC?wT{I)hc+QK ; -zBeZn_ҭ@o M| BU4 MCCY|Ê l;tI tHKulW)5G|lS3D?UiZq(/H!).Bab9njLof:2)+ p{QDMr@!.i3 0#?MOħ{ ÿ`PN&5bMa(u7s@ bԚL!݀y6gi]KLVkp, j @ q&uIL*AVO~7;Sx*m

# 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?
# 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?

# 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?
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); /*因为函数中变量的内存地址是相同的,是同一段内存单元数据*/
}都可以.
希望能够帮到您.