关于静态局部变量的一些疑问,期待大神们的回答

2019-07-20 19:02发布

static uint8_t * getTestData(void)
{
    static uint8_t s_arrTestData[1024];
    int i;

    for (i=0; i<1024; i++) s_arrTestData[i] = i;

    return s_arrTestData;
}

这里为什么要用静态定义这个数组?除了用静态还有没有其他的方法?
不用静态就错了,定义指针也是错,搞不懂

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
shikihane
1楼-- · 2019-07-20 21:50
静态变量函数结束后不会被释放。要是会被释放,还把他当返回值返回,那不是白整了。这里,可以用全局变量,也可以用静态局部变量,静态的封装性要优于全局
走下去
2楼-- · 2019-07-21 01:35
shikihane 发表于 2016-11-1 16:40
静态变量函数结束后不会被释放。要是会被释放,还把他当返回值返回,那不是白整了。这里,可以用全局变量, ...

好的,明白,谢谢大神
impeller
3楼-- · 2019-07-21 04:44
 精彩回答 2  元偷偷看……
TinyBoy
4楼-- · 2019-07-21 09:16
不要期望返回栈内存,你将得到不可预期的结果。
走下去
5楼-- · 2019-07-21 12:50
 精彩回答 2  元偷偷看……
走下去
6楼-- · 2019-07-21 16:19
impeller 发表于 2016-11-1 19:22
静态变量是放在堆里的,局部变量是放在栈里的。
你开的变量太大,栈的空间不够。
但是,你这样声明数组是 ...

好的,知道了

一周热门 更多>