以下程序的输出结果是 #include<stdio.h> void prt(int *x,int*y,int*z) { printf("%d,%d,%d\n",++*x,++*y,*(z++));} main() { int

admin2009-02-15  18

问题 以下程序的输出结果是    #include<stdio.h>    void prt(int *x,int*y,int*z)    { printf("%d,%d,%d\n",++*x,++*y,*(z++));}    main()    { int a=10,b=40,c=20;      prt(&a,&b,&c);      prt(&a,&b,&c);}

选项 A、11,42,31        12,22,41
B、11,41,20        12,42,20
C、11,21,40        11,21,21
D、11,41,21.    12,42,22

答案2

解析 尽管C语言以传值方式进行函数调用,但也可以通过传递指针的值(变量的地址)来达到修改实参变量值的目的,这是此题主要说明的问题。其次,应注意表达式。(z++)的值是*z,其后的z++在程序中无实际作用。函数调用时,由于x,y和z分指向a,b和c,因此,*x,*y和*z就是a,b和c。第一次调用函数时,*x=a=10,*y=b=40,*z=c=20输出结果为11,41,20,至此,已经可以肯定选项B)是正确的。在第一次输出后,a=11,b=41,c=20,第二次输出为:12,42,20。注意:指针作为参数的函数调用的执行过程。
转载请注明原文地址:https://kaotiyun.com/show/uPXp777K
0

最新回复(0)