我做C语言有个题目不会。。想问问各位大侠。。。拜托了。。为什么答案是A,,,求详细解答。*c=*c+1;D=d+1

#include<stdio.h>
void fun (char*c,int d)
{*c=*c+1;d=d+1
printf(”%c,%c,”,*c,d);
}
main()
{char b=’a’,a=’A’;
fun(&b,a); printf(”%c,%c\n”,b,a);
}
程序运行后的输出结果是A
A)b,B,b,A B)b,B,B,A C)a,B,B,a D)a,B,a,B

第1个回答  2011-03-22
因为函数fun (char*c,int d)有两个参数一个是地址传递,一个是值传递,地址传递能改变变量的的值,值传递只是进行复制,再赋给一个临时变量,不改变变量的值。因此b的值改变,而a的值不改变。
第2个回答  2011-03-22
这里有传址和传值的概念
第一个参数char *c是将变量b的地址赋值给了指针c,当指针c指向的数值发生变化时,变量b也会发生变化
而第二个参数d是将变量a的值赋值给了变量d,所以d的变化不会影响到a
相似回答