C++中关于变量的一些问题

初始化与赋值不是一回事,虽然在大多数情况下这种区别无关紧要,初始化的含义是创建变量时赋予其一个初始值,而赋值的含义是把对象当前值擦除,而以一个新值来替代

初始化可以有多种不同形式, 列表初始化使用大括号表示,作用于基本类型时如果存在丢失信息风险则编译器将报错,定义于函数体内的内置类型必须初始化。
int a = 1;
int a = {1};
int a{1};
int a(1)

c++将声明与定义区分开为了支持分离式编译,变量可以声明多次但只能被定义一次。

extern int i; // 声明
extern double pi = 3.14; // 定义
int j; 声明并定义

术语:
作用域 scope
内层 inner
外层 outer
复合 compound
右值 rvalue
指针 pointer