static 修饰局部变量

图1
image

图2
image

结论:
对比图1/2watch窗口&inst5数据,图1在栈(线程,使用了rtos)中,图2在静态全局区


定义一个函数以获取、设置静态局部变量,其作用域限定于该函数,实现类似全局变量的效果,将全局变量隐藏起来

点击查看代码
//获取或设置值
//(1)形参用结构体指针,可以有效避免分配过大的栈空间导致栈溢出(结构体有可能很大)
MP *get_or_set_xxx(MP* p, int flag)
{
	static MP s_MPData;  //静态局部变量,作用域只在本函数,存储于全局数据区,内存空间较栈空间大得多

	if (flag == SET)
	{
		memcpy(&s_MPData, p, sizeof(MP));
	}
	return &s_MPData;
}

参考文章
(第2点)

posted @ 2023-08-18 15:34  我爱茜茜公主  阅读(63)  评论(0)    收藏  举报