c语言中的返回值

来源:百度知道 编辑:UC知道 时间:2024/05/22 14:06:35
主函数中用到变量a,假设a的值是1。调用子函数中修改了a的值,调用子函数后,如果子函数有返回a的值,是不是主函数中a的值就变成了子函数中所修改的值,如果子函数没有返回值,调用子函数后主函数中a的值仍然不会改变?

其实你的概念一定要清楚的哦,像这种问题得分两个情况来考虑的:
①首先看函数的行参,如果是数组类型或者是指针类型的,可以断定为“地址传递”,也就是说,一旦主函数调用该函数时,函数间是存在地址传递的,把要进行处理运算的主函数的内容的地址传递给函数,参与运算的数据其实就是主函数中的实参的内容,简单来讲,就是行参和实参共用一个地址的数据,也就是地址共享。对于这种传递,不管存不存在返回值问题,主函数中的实参的数据内容都会变化的;
②如果判断行参是变量的话,传递形式就为“值传递”,这样,主函数中的该变量值是不会改变的,因为两者的做用域是不同的,在函数里的变量只在该函数体里起作用,并不影响主函数里的变量的值。
其实,对于具体的问题,解答的方法不尽相同的,有些还得综合考虑定义变量的存储方式(有外部变量、内部变量、局部变量、全局变量)。
希望我的回答对你有帮助,谢谢!

你的叙述太主观了,

c语言的函数是值传递的,这个书上已经写的不能再清楚了。

void fun(int x)
{
}
当你调用fun(int x)的时候,例如
int n=0;
fun(n);
这时候会临时生成一个int x,并且把实参n的值(目前是0)赋给形参x,这时候x的值就是0了,在fun函数定义里面对x再怎么操作都不关n的事了,
至于返回值,是函数运行完时返回一个值罢了。

其实参数是指针的函数,也是值传递,只不过传递的是地址。这个在书上讲到指针的时候也说的很清楚。

有一点特别注意就是参数如果是引用类型,它会改变实参的值,因为它是引用类型。

还是建议你把书多看熟些

这与子函数返回与否没有关系

无论返回与否 主函数的a值都不会改变

除非 你用a=子函数(a)的方式

C语言里面确实没有引用,但是呢,可以传地址,效果和引用差不多

不是的
这是方法调用

有两种情况

如果只是普通数值传递调用,那原值没有改变
但如果是指针调用,那原值就会变了