成都创新互联网站制作重庆分公司

C语言ret什么函数,c语言re是什么意思

电脑程序中的RET指的是什么?

ret语句并不是像你想象的那样作为一个跳转语句的返回值使用的。

十载专注建站、设计、互联网产品按需策划服务,业务涵盖品牌网站制作商城网站制作、微信小程序开发、软件系统开发、成都app开发等。凭借多年丰富的经验,我们会仔细了解每个客户的需求而做出多方面的分析、设计、整合,为客户设计出具风格及创意性的商业解决方案,创新互联建站更提供一系列网站制作和网站推广的服务,以推动各中小企业全面信息数字化,并利用创新技术帮助各行业提升企业形象和运营效率。

ret语句是和call语句配套出现的。就像c语言里面的两个大括号一样,有左边的,就要相应的有右边的。

当你调用call命令的时候,PC寄存器的内容被压栈,程序转去执行call指令指向的地址,也就是PC寄存器被赋于新值。

当你调用ret命令的时候,堆栈栈顶元素被返回到PC里面,然后pc++,从刚才的断点继续执行。

C语言的return是什么意思

是return(z);你多了个字母,意思是返回z的值给函数max,然后主函数再调用max,即输出其较大值。

C语言程序中 ret = scanf( %d ,&man);ret是什么意思

scanf函数成功输入的数值个数 我们可以通过判断if(scanf("%d",man)==1)判断是否输入成功

c语言函数的return谁能仔细给我解释一下?

事实上 无论是return ; 还是return X;

在汇编上都只有一条指令:ret(retn)

只不过对于return X; 会在 执行ret指令之前对eax寄存器赋值:

如果是return 0 ; 可能编译器会这样做:

xor eax,eax

ret

其他情况类似

然后从C语言角度讲

对于返回类型为void的函数

函数体内可以出现return;语句来表示结束本函数的执行

这个时候eax还是有值的,因为 函数返回类型是void,因此在调用该函数的地方不可能会去用该函数的返回值,也就意味着该返回值是毫无意义的

楼主想问的 单独的return;语句,对于这行代码,一般只用在返回类型为void的函数体内

若出现在非void返回类型的函数体内,那么返回值是隐含在寄存器eax中的

然后对于有返回值的函数来说

return后面是肯定需要跟一个值的

这个值是被送入寄存器eax带出来的~

我说再多 也许还是会有人不信(本人玩逆向的,这一切信不信那是你们的事,我只能把事实告诉你们,我也只能做到这样了)

下面直接上代码上图:

(微软任何C/C++编译器、VC/VS这些、都支持编译此代码,没有警告,没有错误)

注:主函数不主函数的return都是没有区别的

但是main函数很特别,特别在它有好多种写法,标准C真正的主函数返回类型是int

有2个参数,一个是命令行参数个数,一个是命令行参数

windows下面的主函数可以有三个参数,前两个参数跟标准C一样,第三个参数是环境变量

这些参数都是由mainCRTStartup函数传进来的,而mainCRTStartup再往上你还要研究的话那。。。。那。。。那。。。我只能告诉你这些参数都是要操作系统传进来的吧~~~

我们编程的时候,也许有些菜鸟会把main写成如下形式:void main()

其实这种写法在编译之后都是会被转化成标准写法的底楼说的 不带返回值系统默认返回0这完全是不靠谱的,因为事实当中返回值都是被寄存器eax带出去的,而对于main是必须要返回值的,菜鸟写了没返回值的main在编译之前就被编译器替换掉了,哪来的默认返回0的说法?何来默认?系统会把你写的main换成 标准main形式!标准main会在底下返回0

主函数return的值只有你在其他进程中创建子进程,子进程的返回状态被父进程接收的值就是main的返回值,所以,在你写的程序不需要被其他进程创建的话,main的返回值是无关紧要的


文章名称:C语言ret什么函数,c语言re是什么意思
标题链接:http://cxhlcq.com/article/dseiosh.html

其他资讯

在线咨询

微信咨询

电话咨询

028-86922220(工作日)

18980820575(7×24)

提交需求

返回顶部