2-2 C++变量
目录
2.2.1 变量定义:列表初始化(list initialization)
-
定义一个整型
i
并初始化为0 -
#include<iostream> using namespace std; int main(){ //下面四种初始化方式都可以 int i = 0; int i = {0}; //c++新特性 int i{0}; int i(0); return 0; }
-
注: 含有
{}
的的定义方式不支持类型转换(如把float的值用此方式初始化给int时会警告或报错)
2.2.2 变量的定义与声明
C++分离式编译
- c++支持分离式编译(separate complication):允许把程序分割成多个文件在分别编译
- 分离式编译要保障变量间的互通
定义与声明
-
声明(declaration):
extern int i;
- 表明程序中有int i 这个变量,编译器会在所有编译文件中寻找该变量
- 需要指明变量的类型(type)和名称(name)
-
定义(definition):
int i
- 编译器直接创建变量 int i ,为它分配存储空间
- 需要指明变量的类型(type)和名称(name),可以指定初始值
-
概念关系图
-
注意点
- 变量只能被定义一次,但可以被声明多次
- 声明是赋予初始值就等价于定义,
extern
关键字被覆盖extern double pi = 3.1416; //definition
2.2.3 C++变量命名
-
不能以数字和下划线
_
开头,不能出现连续的两个下划线 -
不能出现关键字
2
2.2.4 变量名的作用域(scope of a name)
全局作用域与块作用域
- 全局作用域(global scope):全局有效
- 块作用域(block scope):块内有效【被花括号包围的部分被称为一个块】
嵌套关系
规则
- 全局变量与块变量同名时,块变量会覆盖全局变量
::variables_name
:在块变量把全局变量覆盖时坚持调用全局变量