形参占内存吗?

2020-01-27 11:21发布

小弟初学51,用keil。请教各位大侠!

void USART_Init(unsigned char Baudrate);
void USART_Init(unsigned char Baudrate)
{
/*省略*/
}

Program Size: data=10.0 xdata=0 code=93


void USART_Init(unsigned long Baudrate);
void USART_Init(unsigned long Baudrate)
{
/*省略*/
}

Program Size: data=13.0 xdata=0 code=105

请教给位大侠!形参也占内存吗!?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
marshallemon
1楼-- · 2020-01-27 11:52
形参是分配在堆栈中的
chenxujiaoyang
2楼-- · 2020-01-27 15:48
 精彩回答 2  元偷偷看……
jz701209李
3楼-- · 2020-01-27 18:39
路过,学习一下........
tenx
4楼-- · 2020-01-27 18:47
相当于局部变量在栈中,全局变量在堆中
Hisen-lv
5楼-- · 2020-01-27 21:02
要调用这个形参时会临时开辟存储单元,待退出调用该形参的函数后系统会释放该存储单元,即只在使用时占内存,使用后就不占内存了
happy521837
6楼-- · 2020-01-28 02:36
chenxujiaoyang 发表于 2013-9-3 20:59
函数调用时,参数被压入栈内存,多个参数的压栈顺序要参考具体的调用规则。 ...

我刚才查阅了一些资料,形参占用内存,那编译代码的时候,就会占用data区,但是有时候发现形参及局部变量加一起小于四个字节的时候,编译的时候却不增加data区,是因为编译器将其优化的通用寄存器,没有占用新的内存。是这样的吗?前辈?

一周热门 更多>