c语言基础 既然C语言函数的局部变量会被释放,那为什么函数还可以把它return返回呢?
既然C语言函数的局部变量会被释放,那为什么函数还可以把它return返回呢?
看了下面兄弟的回信,我们只能说他们一半是对的。
真正的原因是abi(应用程序二进制接口)。
ABI定义了与系统交互的细节,如数据类型、大小和对齐方式;调用约定(控制函数的参数传递方向、可变长度处理、堆栈清理体以及如何接受返回值等);系统调用的编码以及应用程序如何对操作系统进行系统调用系统;以及采用完整ABI操作系统基本格式、程序库等的第二代对象文件。完整的ABI,如英特尔二进制兼容标准(IBCs),允许支持它的操作系统上的程序在支持此ABI的其他操作系统上运行,而无需修改。
其他ABI标准化细节包括C名称修改和同一平台上编译器之间的调用约定,但不包括跨平台兼容性。
至于下面兄弟提到的eax save返回值,这只是X86的ABI规范。在其他CPU架构平台(如PowerPC)中,实现是不同的!--PowerPC,返回值保存在R3寄存器中
bar函数:函数:绘制二维条形图用法:void farbar(intleft,inttop,intright,intbottom)程序示例:#include<graphics。H>#包括<stdlib。H>#包括<stdio。H>#包括<conio。H>#intmain(void){/*请求自动检测*/intgdriver=DETECT,gmode,errorcode intmidx,midy,i/*初始化graphicsandlocalvariables*/initigraph(&gdriver,&gmode,“”)/*readresultofinitialization*/errorcode=graphresult()if(errorcode!=grOk)/*anerrorocurred*/{printf(“Graphicserror:%sn”,graphistrormsg(errorcode))printf(“Pressanykeytohalt:”)getch()exit⑴;/*terminateWithErrorCode*/}midx=getmaxx()/2 midy=getmaxy()/2/*loopthroughthefillpatterns*/for(i=SOLID FILLi<USER FILLi)){/*设置填充样式*/setfillstyle(i,getmaxcolor())/*绘图条*/bar(midx-50,midy-50,midx 50,midy 50);getch()}/*清除*/closegraph()返回0}
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。