
事实上 无论是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的返回值是无关紧要的
一般return语句用于函数返回值,当外界调用该函数需要知道函数执行情况的时候,就需要用返回值来告诉调用者,而当调用者不需要知道执行情况,只需要去执行该函数的时候,那就不需要返回值。
给你举两个相对生动点的例子:
1 当你去给别人转账的时候,银行要告诉你是不是转成功了,这种模式就需要返回值。
2 养鱼场喂鱼的时候,只需要把食物丢到池塘就可以了,不需要管那只鱼吃了那只鱼没吃,这种情况就可以不用设计返回值。
return语句:return语句[表达式]退出函数,选择性地向调用方返回一个表达式。不带参数值的return语句返回None。return简单的说就是返回函数中的值到调用此语句的地方,不过仅仅就是一个返回,用法是在是太多太灵活了在主函数中,可以作为函数结束的标志,在调用函数中可以用来返回要求的值,也可以用来标志程序运行是否满足某种条件。
return 语句是Python语言中函数返回的一个值,每个函数都应该有一个返回值;其中,return返回值可以是一个数值,一个字符串,一个布尔值或者一个列表。 Python 函数返回值return ,函数中一定要有return 返回值才是完整的函数,如果你没有定义Python 函数返回值,那么得到一个结果是None对象,而None表示没有任何值。
MATLAB中return。break。contiue。keyboad的使用规则是:
break就是直接跳出该层循环;
continue就是直接进入该层循环的下一次迭代;
return就是直接退出程序或函数返回了;
使用方法:
>>keyboard
K>>a=1;
K>>
K>>return
>>
扩展资料:
注意事项:
1、一个c程序由一个或多个程序模块组成,每一个程序模块作为一个源程序文件。对较大的程序,一般不希望把所有内容全放在一个文件中,而是将它们分别放在若干个源文件中,由若干个源程序文件组成一个c程序。这样便于分别编写和编译,调高调试效率。一个源程序文件可以为多个c程序公用。
2、一个源程序文件由一个或多个函数以及其他有关内容(如指令,数据声明与定义等)组成。一个源程序文件是一个编译单位,子啊程序编译时是以源程序文件为单位进行编译的,而不是以函数为单位进行编译的。
C语言里(旧标)如果函数前面不加返回类型, 就默认是void
所以main() {} 就相当于 void main() {}
void表示该函数没有返回值,所以不需要return xxx, 也不能return值 (但是可以单独用return跳出函数)
对于main函数,现在是推荐 int main() { return 0; }
表示,程序结束返回
括号中的是你这断程序完成后要返回给调用它的程序的返回值。
也就是你这个程序具体功能的体现。
举个例子,我写了一个函数来计算从1加到100,那么我在主程序中只要调用这个程序,这个程序就能将1加到100的结果算出来赋值个主程序中的某个变量。那么这个结果就是在求和程序中用return返回的。
以上就是关于c语言函数的return谁能仔细给我解释一下全部的内容,包括:c语言函数的return谁能仔细给我解释一下、C语言中return的作用、return语句等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)