C语言函数调用返回问题

如题所述

一、return命令的含义
return命令的意思是返回调用者百。如果return后面有值(如你函数中的10),则将该值返回给调用者。
但是,在调用者函数(度如:main)中,如果想得到f()函数的返回值,需要有个变量来接收这个值,否则,这个数值将被程序忽略。
二、变量的定义、赋值与引用问
int main(void)
{
int i; //此时的i只是定义一个变量,变量是用来存储数据的。好比你想装东西,指定了一个箱子,可是现在箱子中没有东西(也可能这个箱子曾经被人用过,里面还有些垃圾答---随机值)
f(i); //函数f()引用了i变量,,但是i这个在f()中并没有发生变化(即使变化也不会影响到i,这里又涉及到实参与形参的问题内,先不讲),所以i还是个空箱子
printf("%d\n", i); //此时想输出i的数容值,因为是个随机值(空箱子),当然不能输出你想要的10了。 printf("%d\n", f(i)); //直接把函数返回的值,输出出来,可以看到10
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-06-13
把下面的代码改一下就可以了
int
i;
f(i);
int
i
=
f(200);
这样写,就把函数百f的返回值10赋给i了。而200这个度数值,就赋给了j。
当然200这个数值可以定义别的变量,放在这个位置。
============================================================
1.在这里是把10直接返回给主函数的i了呢?还是把10先返会给调用函数里的j呢?
f(i)这样的写法,函数返回值没有用到,等于没写。也就是说,相对于你这个函数,j
和return
10都没用上。
int
f(int
j)这个函数在主函数调用时,写成f(i),是将i的值专赋给j,到此为止,i的作用已经完成,属如果i
=
1,那么,j
也等于1,不会有任何返回值。
2.其次主函数中f(i);这一语句中把10返回到f(i)中不就是i就等于10了吗。
返回的10,是函数f()返回的值,是整个f()的返回值,你用
i
=
f(1)这样的写法,可以将函数f()的返回值赋值给i。
就是这样。
第2个回答  2020-01-06
值引用;zhidao调用f(1)的时候相当于:int
j
;
j
=
i;
f函数只是用了一下i的值回,没有干什么,return是一个返回函数的值;你看看《c和指针》这本书;要改变i
的值,在定义函数的时候要用到指针
void
f(int
*
i)
{
int
j
=
10;
i
=
&j;
}
然后到主函数里调用时候f(&i);
如果没记错的话,i的值会改变;答你要分清楚i,&i,*i;之间的关系;i只是值;&i是引用;*i是地址;
指针用得好不好是c语言学的好不好的一个标准;
相似回答