C++ 2.2 变量的声明、定义、初始化、标识符、作用域


标识符

就是变量命名,可以使用的字符:数字、字母、下划线
变量命名只能由字母和下划线开头,对长度没有限制,对大小写敏感。


声明并定义并初始化

int a = 0; 声明并定义了变量 a,初始化值为0。


声明并定义

int a;


extern 仅声明变量

使用 extern关键字,仅声明变量。如extern int a;
仅声明,是不能初始化的


作用域

主要看声明在哪里。若声明在函数花括号外,就是全局作用域;声明在函数花括号内,就是局部作用域。

没有 extern 的声明并定义

若 全局变量 a 声明并定义 在 源文件 s1中; (不考虑扩展名,这里只是作个说明)
源文件 s2中要使用全局变量 a,那么需要 #include "s1",即引入s1。
若在 s2中不引入 s1,且单独声明并定义全局变量 a,那么当两个源文件都被链接编译时,就会发生"重复定义同名变量的错误"。


有 extern 的声明

若 全局变量 a 声明在 源文件 s1中; (不考虑扩展名,这里只是作个说明)
也声明在 s2中;
这时没有定义,也是无法对其初始化的。

eg.

s1:
extern int a;

s2: 
extern int a;
int a; 

好处是:不需要为了使用全局变量,而引入整个源文件


全局变量和局部变量的默认初始化

  • 全局变量不赋值时,可以被默认初始化。

需要变量的类型 支持默认初始化。对于内置类型都是支持的。标准模板库中STL是的模板类,也是支持的。

  • 局部变量不赋值时,不会被默认初始化。直接使用可能引发错误。
发布了400 篇原创文章 · 获赞 364 · 访问量 162万+

猜你喜欢

转载自blog.csdn.net/jjwwmlp456/article/details/89604930
2.2