关于函数的局部变量问题 C51编译模式下

2019-07-21 04:54发布

void task2()
{
        int a = 0;
        while(1)
        {
                delay();
                SMG_Dis_number(b);
                a++;
        }
}

如上图函数,在keil中编译,想问当进入函数delay()之后局部变量a的数据是如何保存的呢?同时还想问一下局部变量是存储到普通的内存中还是任务堆栈里呢?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
正点原子
1楼-- · 2019-07-21 06:11
保存在堆栈里面。
1208
2楼-- · 2019-07-21 07:36
局部变量的作用,为了临时保存数据需要在函数中定义变量来进行存储
周亚龙
3楼-- · 2019-07-21 07:48
正点原子 发表于 2019-2-26 10:47
保存在堆栈里面。

原子哥,对于MCS51来说是保存在内存中的,我调试过代码,从父函数进入子函数时,sp指针加二,刚好等于子函数的返回地址。对于ARM是怎么样是不清楚的。怪我没把问题写清楚