函数调用具体过程-堆栈【1】

本文深入解析了C语言中函数调用与返回值的实现机制,通过具体代码实例,详细阐述了使用return(a+b)与c=a+b;return(c)两种不同方式的函数调用过程,揭示了它们在参数传递、内存堆栈操作及返回值处理上的区别,旨在帮助开发者更深入地理解函数执行流程。

    return (a+b)和a+b;return c的区别。

    看调用约定,顺便理解下函数调用的具体过程。一般传值调用的时候,先把参数逐个push到栈中去,然后修改ebp栈基址寄存器,push一些寄存器的值。子函数内部就从刚才push进的参数里拿数就行了。返回值写到eax寄存器中去。以下为测试代码。


#include <stdio.h>


int su_1(int a_, int b_)
{
	int c;
	c=a_+b_;
	return c;
}

int su_2(int a_, int b_)
{
	int c=a_+b_;
	return c;
}


int su_3(int a_, int b_)
{
	return a_+b_;
}

int main()
{
	int a=1;
	int b;
	b=2;
	int c;
	c=su_1(a,b);
	printf("%d\n", c);
	return 0;
}

采用return a+b形式:



采用

c=a+b;

return c; 形式:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值