静态变量与非静态变量的区别

 我来答
鲸志愿
2022-09-30 · 专注大中学生升学规划服务
鲸志愿
向TA提问
展开全部

1、存储位置不同

静态变量:存储在全局数据区(静态数据区)。

非静态变量叫动态变量:存储在内存出栈数据区。

2、生命期不同

动态变量:根据你定义的位置确定,比如你在一个函数中定义的,那么超出该函数范围变量将失效。

静态变量:程序结束时才释放。

3、作用域不同

动态变量:同样的要根据你定义的位置才能确定,和第二点的一样。

静态变量:当前文件中有效。

扩展资料;

静态变量的作用;

1、对于静态全局变量,源文件静态声明的文件级变量和函数的作用域仅限于文件(仅在文件中可见),即内部连接,因此可以用来限制变量的作用域。

2、对于静态局部变量,虽然函数内静态声明的变量范围与自动局部变量的范围相同(即范围仅在函数内),但存储空间是通过静态分配而不是默认的自动分配获得的。

所以存储空间在不同的区域是不同的(一般来说,静态分配时在编译时在程序数据段中划分存储空间,一次性分配在整个过程中是有效的。而在自动分配时,存储空间是在调用堆栈上分配的,只分配和释放在调用期间),两个调用之间的变量值总是一致的。必须注意,静态局部变量只能初始化一次,这是由编译器保证的。

3、对于静态成员变量,在C++中,类定义中静态声明的成员变量属于类变量,即它们在所有类实例中共享,相反是过程变量。

参考资料来源;百度百科——静态变量

百度百科——动态变量

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式