函数返回值return,c语言return

return在C语言中不是必须的 。C语言中的函数定义分为函数入口和函数出口 。
C语言中写return 0;是不是都可以省略?

函数返回值return,c语言return


看情况 。return在C语言中不是必须的 。C语言中的函数定义分为函数入口和函数出口 。当有入口参数或者出口参数时,需要说明参数的数据类型 。如定义一个延时函数,入口参数为延时时间,延时后不需要返回参数 。因此可以定义如下:void delayms(unsigned int T){...}void代表不需要返回值,也就是不需要使用return 。
unsigned int T代表入口参数 。以下四个代码都能正确运行#include main(){double grade[200];double sum,avg,temp;int count,i,n;i=0;count=0;sum=0;printf("请依次输入每个同学的成绩,输入-1结束\n");scanf("%lf 。
既然C语言函数的局部变量会被释放,那为什么函数还可以把它return返回呢?
函数返回值return,c语言return


看了底下兄弟的答复,只能说答对了一半 。真正的原因在于ABI(应用程序二进制接口) 。ABI定义了与系统交互的细节:如数据类型、大小和对齐;调用约定(控制函数的参数的传递方向、可变长度处理、堆栈清理主体以及如何接受返回值等);系统调用的编码和一个应用如何向操作系统进行系统调用;以及在一个完整的操作系统ABI中,目标文件的二进制格式、程序库等等 。
【函数返回值return,c语言return】一个完整的ABI,像Intel二进制兼容标准 (iBCS),允许支持它的操作系统上的程序不经修改在其他支持此ABI的操作体统上运行 。其他的 ABI 标准化细节还包括 C名称修饰 ,和同一个平台上的编译器之间的调用约定,但是不包括跨平台的兼容性 。至于底下兄弟所说的EAX保存返回值,这个只是X86的ABI规范,在PowerPC等其他CPU架构平台,实现是不一样的!——PowerPC下,返回值是保存在R3寄存器中的 。

    推荐阅读