C++静态存储方式
在上一节小林讲过,作用域从空间的角度来分析的,分为全局变量和局部变量,在这一节中,小林带着你学习变量的另一种属性,变量在内存中的存在期间,也就是存储期。
存储期可以分为静态存储期和动态存储期,静态存储方式是指在程序运行期间,系统对变量分配固定的存储空间;动态存储方式则是在程序运行期间,系统对变量动态地分配存储空间。
内存中的供用户使用的存储空间可以分为三部分:
- 程序区
- 静态存储区
- 动态存储区
全局变量全部存放在静态存储区中,在程序开始执行时给全局变量分配存储单元,程序执行完毕就释放这些空间,在程序执行过程中它们占据固定的存储单元,而不是动态地进行分配和释放。
C++动态存储方式
动态存储区中存放以下数据:
函数形式参数,在调用函数时给形参分配存储空间。
函数中的自动变量。
函数调用时的现场保护和返回地址。
动态存储在函数调用开始时分配动态存储空间,函数结束时释放这些空间。在程序执行过程中,这种分配和释放是动态的。
在C++中还有存储类别的属性,具体包含4种:
- 自动auto
- 静态static
- 寄存器registe
- 外部extern
根据变量的存储类别,可以知道变量的作用域和存储期。
经典案例:C++实现判断闰年。
源码分析:
#include<iostream>//头文件
using namespace std;//命名空间
int main()
{
int year;//定义整型变量
cout<<"请输入要判断的年份:";//提示语句
cin>>year;//键盘输入年份
if((year%4==0 && year%100!=0)||year%400==0)//判断闰年的条件
{
cout<<year<<"是闰年"<<endl;
}
else
{
cout<<year<<"不是闰年"<<endl;
}
return 0; //函数返回值为0
}
编译后的结果:
请输入要判断的年份:2008
2008是闰年
--------------------------------
Process exited after 7.106 seconds with return value 0
请按任意键继续. . .
更多案例可以go公众号:C语言入门到精通
正文完