问题
单项选择题
有以下程序: #include<stdio.h> #include<string.h> struct A {int a;char b[10];double c;}; void f(struct A*t); main() {struct A a={1001,"ZhangDa",1098.0}; f(&a);printf("%d,%s,%6.1f\n",a.a,a.b,a.c); } void f(struct A *t) {t->a=1002;strcpy(t->b,"ChangRong");t->c=1202.0;} 程序运行后的输出结果是( )。
A.1001,zhangDa,1098.0
B.1002,ChangRong,1202.0
C.1001,ChangRong,1098.0
D.1002,zhangDa,1202.0
答案
参考答案:B
解析: 本题主要考查是的函数调用时参数之间的传递问题。在C语言中参数之间的传递是传值,也就是把实参的值复制一份传递给形参,而实参的值不发生变化。但对于指针调用来说,函数直接对实参的地址操作,因此在这种情况下实参变化。