2016 - 2024

感恩一路有你

c语言返回值怎么理解 既然C语言函数的局部变量会被释放,那为什么函数还可以把它return返回呢?

浏览量:1523 时间:2021-03-16 02:26:02 作者:admin

既然C语言函数的局部变量会被释放,那为什么函数还可以把它return返回呢?

看了下面兄弟的回信,我们只能说他们一半是对的。

真正的原因是abi(应用程序二进制接口)。

ABI定义了与系统交互的细节,如数据类型、大小和对齐方式;调用约定(控制函数的参数传递方向、可变长度处理、堆栈清理体以及如何接受返回值等);系统调用的编码以及应用程序如何对操作系统进行系统调用系统;以及采用完整ABI操作系统基本格式、程序库等的第二代对象文件。完整的ABI,如英特尔二进制兼容标准(IBCs),允许支持它的操作系统上的程序在支持此ABI的其他操作系统上运行,而无需修改。

其他ABI标准化细节包括C名称修改和同一平台上编译器之间的调用约定,但不包括跨平台兼容性。

至于下面兄弟提到的eax save返回值,这只是X86的ABI规范。在其他CPU架构平台(如PowerPC)中,实现是不同的!--PowerPC,返回值存储在R3寄存器中

在一般的C教材中,有比较详细的介绍。返回值的形式取决于函数的类型。返回值可以是数据、指针、字符串等,在调用该函数时,可以根据返回值判断函数是否正确执行,也可以得到所需的信息。举个例子,

intadd(intx,inty)

{

inta;

a=x y;

returna

]这个函数返回两个数字相加的结果。如果在函数中调用此函数,则可以返回两个数据之和,例如

intget。Add()

{

intb;

B=Add(1,2);

printf(%dn“)

return0

}]调用Add函数时,函数返回a,调用时得到Add指定B=Add();然后a返回B,这是所需12的结果。在get中,如果add函数的返回值为0,则可以根据函数的返回值判断函数是否执行成功,例如

intmain()

{

INTC

C=get Add()

if(C==0)

{

printf(“OKn”)}

else

{

printf(“errorn”)}

这里,您知道get Add的返回值是0。如果调用此函数的返回值不为0,则此函数执行时出错。

当然,函数的返回值也可以是指针,它包含您想要的内容。需要注意的是,有些函数没有返回值,例如,void函数没有返回值。

我只是举个例子来说明这个问题。你需要自己找到细节。

c语言返回值怎么理解 return函数返回到哪里 return 1和return 0的区别

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。