C语言 急。。。。

#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);
} 答案b,B,b,A 求详解。。。。
题目中的void是什么意思。 是不返回到主函数吗?

void的意思是无返回值类型
答案b,B,b,A 的详解如下
fun(&b,a);调用第一个参数&b属于地址传递,第二个参数a属于值传递
地址传递就是把存储b地址传过去,返回到主函数时fun内部的操作会改变该值
值传递只是把值传过去,返回到主函数时fun内部的操作不会改变该值
所以&b操作结果里外都是b
而a的操作结果里面是B,而返回到main后仍然是A
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-09-07
主函数中的变量:b='a',a='A'
当调用函数fun(&b,a)时的变量引用中,&b是一个指针,或者说是对b的直接引用,在函数fun内部所做的操作会对主函数中的b产生影响(即使fun函数没有返回值),而a的引用就是引用的副本;意思就似乎说,在函数fun内部所做的运算,当函数结束的时候就会释放a的副本的存储空间,并不会对主函数中的a的值产生变化。本回答被提问者采纳
第2个回答  2011-09-07
给个例子你就明白了。
int fun(char*c,int d)
{*c=*c+1;d=d+1;
printf("%c,%c,",*c,d);
return d;
}
这是有返回值的,并且返回一个整数值。return d;就是用来返回数值的语句。void就是这个函数没有返回值的。也可以不写void,就像main()那样,也可以写void main()。也可以不写。不写默认无返回值追问

那这个题目的输出的第三个字母为什么是b那,无返回值的话不是应该直接输出a了吗

追答

fun函数里*c指向了变量b,在fun函数里*c加了1,而*c是指向b的,所以也就是变量b加了1。*c是指向变量b存储的地址,所以它指向的改了一个变量后,这个变量就不是局部变量这样改了。这个不用理。反正就把它理解为*c=b吧。

第3个回答  2011-09-07
void是函数的返回值的类型,这里是指无返回值型,这里定义 了fun函数被主函数main调用
第4个回答  2011-09-07
是“无返回值”的意思。
也就是回到主函数时并不带回任何数值。追问

这个题怎么做那

追答

最开始给字符型变量b赋值'a',a赋值'A'。
执行fun()函数,传入b的地址以及a的实体。
在fun()函数中,将b地址的数值加1,因此b的实体变为'b';将临时变量d(其数值等于传入的a)加1,因此d的实体变为'B'。打印输出“b, B, ”。
返回主函数,打印输出b的实体与a的实体。b的实体在fun()函数中被修改过,因此打印输出“b, A\n”

相似回答