C++register寄存器变量
变量除了数据类型以外,还有3种属性:
- 存储类别,C++允许使用auto,static,register和extern4种存储类别。
- 作用域,指程序中可以引用该变量的区域。
- 存储期,指变量在内存的存储期限。
auto, static和register3种存储类别只能用于变量的定义语句中。
auto char character1;//字符型自动变量,在函数内定义
static int number1;//静态局部整型变量
register int number2;//整型寄存器变量,在函数内定义
extern int number3;//声明一个已定义的外部整型变量
从作用域角度分,有局部变量和全局变量。
局部变量
- 自动变量,,即动态局部变量
- 动态局部变量
- 寄存器变量
- 形式参数
全局变量
- 静态外部变量
- 外部变量
从变量存储期来区分,有动态存储和静态存储两种类型
动态存储
- 自动变量
- 寄存器变量
- 形式参数
静态存储
- 静态局部变量
- 静态外部变量
- 外部变量
从变量值存放的位置来区分,可分为
内存中静态存储区
- 静态局部变量
- 静态外部变量
- 外部变量
内存中动态存储区,自动变量和形式参数 。
CPU 中的寄存器,寄存器变量。
C++中一个函数一般由:声明部分、执行语句两部分组成,声明部分的作用是对有关的标识符的属性进行说明,对于函数,声明和定义的区别是明显的,函数的声明是函数的原型,而函数的定义是函数功能的确立。
对函数的声明是可以放在声明部分中的,而函数的定义显然不在函数的声明部分范围内,它是一个文件中 的独立模块。
对变量而言,声明与定义的关系稍微复杂一些。在声明部分出现的变量有两种情况:一种是需要建立存储空间的;另一种是不需要建立存储空间的。
经典案例:C++输出各种变量。
源码分析:
#include<iostream>//头文件
using namespace std;//命名空间
int main()//主函数
{
auto int num1=1;
static int num2=2; register int num3=3;
cout<<num1<<endl;
cout<<num2<<endl;
cout<<num3<<endl;
return 0;//函数返回值为0
}
编译后的结果:
1
2
3
--------------------------------
Process exited after 1.476 seconds with return value 0
请按任意键继续. . .
文章来源: zhuanlan.zhihu.com,作者:,版权归原作者所有,如需转载,请联系作者。
原文链接:zhuanlan.zhihu.com/p/326714705