函数返回值是存在内存栈中的,函数名是在代码段,返回值与参数是在数据段,当函数调用执行时就会将返回值压入栈中,int b=A();相当于调用函数,会将返回值弹出,传递给b.
就是这样一个过程。
并不是说将返回值返回操作系统,而是放到内存栈中。调用时,再弹出给对应的对象。
函数返回值给了它的调用者,主函数的返回值给了系统,是因为主函数是系统调用的。
而一般的函数是由语句调用的,所以返回值赋给它的调用处,也就是在函数调用的位置用返回值代替函数。
函数其实就是汇编函数调用的过程,返回的时候一般eax寄存器指向要返回的数据(不是什么给函数一个值),然后调用者可以访问这数据。要具体理解编程语言工作过程得了解编译原理和汇编基础知识
我就直接上代码了。
int a(int b)
{
return b;
}
int main(void)
{
int c=a(10);
return c;
}
第一个函数 int a(int b) 里的return 是返回给它的调用者。 第二个 return 因为是在 main函数里,而main函数是被系统调用的,所以只有main函数才返回给系统。其他函数统统返回给调用它的函数。
在上面这个例子里 a(10) 返回的是10,所以 c 的值是10。然后main函数把C的值返回给系统。但是:main函数里的return 有个特别的作用:返回程序的运行状态。如果程序运行正常,则return 0; 如果出错才返回非0整数。
函数的返回,你可以看看与函数栈相关的书籍
返回值一般是作为一个判断函数执行情况的依据的
比如一个函数int func()里面这样写
if(条件) return true
else return false;
这样函数就可以有两个返回值
通过这两个返回值能判断出函数执行了那条语句
其最终的目的就是判断函数是否执行成功了