变量

Posted on 2019-01-08 21:51  Summer_8918  阅读(84)  评论(0)    收藏  举报

变量提供一个具名的、可供程序操作的存储空间。对C++程序来说,变量和对象可以互换使用。

对象是具有某种数据类型的内存空间。

初始化不是赋值,初始化的含义是创建变量时赋予其一个初始值;而赋值是把对象的当前值擦除,用一个新值来代替。

列表初始化

int u{0};

int u=0;

int u(0);

int u={0};

上面四个等式含义一样,将int 变量初始化为0。

默认初始化

默认值由变量类型和变量定义的位置决定。

内置类型的变量未被显式地初始化,值由定义的位置决定;

定义与任何函数体之外的变量被初始化为0;

定义在函数体内部的内置类型变量将不被初始化。

类的对象如果没有显式地初始化,其值由类确定。

建议初始化每一个内置类型的变量

C++支持分离式编译机制,允许将程序分割成若干个文件,每个文件可被单独编译。为了支持分离式编译,将声明和定义分离。声明使得名字为程序所知,一个文件如果想使用别处定义的名字则必须包含对那个名字的声明。定义负责创建与名字关联的实体。

如果想声明一个变量而非定义它,就在变量名前添加关键字extern,而且不要显式地初始化变量。

extern int I;    //声明i而非定义i。

变量能且只能被定义一次,但是可以被多次声明。

C++是一种静态类型,其含义是在编译阶段检查类型。其中检查类型的过程称为类型检查。对象的类型决定了对象所能参与的运算。

变量名命名规范:

标志符要能体现实际含义;

变量名一般用小写字母;

用户自定义的类名一般以大写字母开头。

名字的作用域

作用域是程序的一部分,在其中名字有其特定的含义,C++语言中大多数作用域都以花括号{}分隔;

有全局作用域,块作用域,内层作用域,外层作用域;

同一个名字在不同的作用域中可能指向不同的实体;

名字的有效区域始于名字的声明语句,以声明语句所在的作用域末端为结束;

在对象第一次被使用的地方附近定义它是一种好的选择。

允许在内层作用域中重新定义外层作用域已有的名字。

如果函数有可能用到某全局变量,则不宜再定义一个同名的局部变量。因为在局部变量的作用域中局部变量会覆盖全局变量。