编译器是如何处理我们在函数中的返回值并将其传回给我们主函数中的。

本文通过一个C++示例程序详细解析了引用作为函数参数及返回值的应用场景,并探讨了编译器如何处理不同大小的返回值,以及它们在主函数中是如何被存储的。


#include<iostream>
#include<stdlib.h>
using namespace std;
 int & add(int& left, int & right)
{
	 int c = 0;
	 c = left + right;
	 return c;
}
int main()
{
	int a = 3;
	int b = 4;
	add(a, b);
	int& ret = add(a, b)//而这个引用是等于给我们的这块空间起了个别名。怪不得呢,要返回什么,就用什么来接收,
	cout <<ret << endl ;
        system("pause");
	return 0;
}



在我们return C时,那我们的编译器是如何处理这个返回值C的呢,其实如果C的值所占的内存空间很小的话,我们的编译器就将这个值保存在我们的寄存器中。如果很大,在执行主函数时,则在我们的主函数中提前会开辟一个空间,将这个返回值,存入这个空间中,即CPU会将处理的这个值返回给我们的主存空间。这也就解释了返回什么类型,我们就用什么类型去接收。而编译器是如何做这些的,这些都是通过我们的汇编语言来实现的。即是汇编语言告诉编译器去做这些的。
	 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值