2.2.1变量定义
1.变量定义的基本形式是:首先是类型说明符(type specifier),随后紧跟由一个或多个变量名组成的列表,其中变量名以逗号分隔,最后以分号结束。列表中每个变量名的类型都由类型说明符指定,定义时还可以为一个或多个变量赋初值。
2.何为对象?
通常情况下,对象是指一块能存储数据并具有某种类型的内存空间。
把对象的值区分开来,其中对象指能被程序修改的数据,而值指只读的数据。
初始值
当对象在创建时获得了一个特定的值,我们说这个对象被初始化了。
初始化不是赋值,初始化的含义是创建变量时赋予其中一个初始值,而赋值的含义是把对象的当前值排除,而以一个新值来替代。
列表初始化
用花括号来初始化变量得到了全面应用,而在此之前,这种初始化的形式仅在某些受限的场合下才能使用。这种初始化的形式被称为列表初始化(list initialization)。无论是初始化对象还是某些时候为对象赋新值,都可以使用这样一组由花括号括起来的初始值了。
当用于内置类型的变量时,这种初始化形式有一个重要特点:如果我们使用列表初始值存在丢失信息的风险,则编译器将报错。
默认初始化
1.如果定义变量时没有指定初值,则变量被默认初始化。
2.定义于函数体内的内置类型的对象如果没有初始化,则其值未定义。类的对象如果没有显式地初始化,则其值由类决定。
2.2.2 变量声明和定义的关系
声明使得名字为程序所知,一个文件如果想使用别处定义的名字则必须包含对那个名字的声明。
定义负责创建与名字关联的实体。
变量能且只能被定义一次,但是可以被多次声明。
2.2.3 标识符
C++的标识符由字母,数字和下划线组成,其中必须以字母或下划线开头,标识符的长度没有限制,但是对大小写字母敏感。
用户自定义的标识符不能连续出现两个下划线,也不能以下划线紧连大写字母开头,定义在函数体外的标识符不能以下划线开头。
变量命名规范
2.2.4 名字的作用域
- 作用域是程序的一部分,在其中名字有其特定的含义。C++语言中大多数作用域都以花括号分隔。
- 同一个名字在不同的作用域中可能指向不同的实体。名字的有效区域于名字的声明语句,以声明语句所在的作用域末端为结束。
嵌套的作用域
作用域能彼此包含,被包含(或者说被嵌套)的作用域称为内层作用域,包含着别的作用域的作用域称为外层作用域。
如果某函数有可能用到某全局变量,则不宜再定义一个同名的局部变量。