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

admin2009-01-15  17

问题 以下程序的输出结果是(    )。    #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) 是正确的。第二次输出为:12,42,20。
转载请注明原文地址:https://kaotiyun.com/show/u7Hp777K
0

相关试题推荐
随机试题
最新回复(0)