A-A+

以下程序的输出结果是 #include void prt (int *x

2022-08-06 06:55:34 问答库 阅读 177 次

问题详情

以下程序的输出结果是
#include <stdio.h>
void prt (int *x, int*y, int*z)
{printf("%d,%d,%dn",++*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

参考答案

正确答案:B
解析:考查指针作为参数的函数调用。尽管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。

考点:程序