C++程序通常由多个文件组成,为了让多个文件访问相同的变量,区分了声明和定义。
在一个程序中,变量有且仅有一个定义。
extern关键字声明变量名而不定义:extern int i;//声明并不定义,只是说明变量定义在程序的其他地方 int i;//声明并且定义
声明有初始化可被当做是定义,虽然有extern,如:extern double pi=3.14;
名字的作用域:作用域是程序的一段区域,大多数作用域使用花括号来界定。主要有全局作用域、局部作用域和语句作用域。
通常把一个对象定义在它首次使用的地方是个很好的办法。
const限定符。设计该限定符的缘由:1.程序中用到很多常数,如果需要修改的话,到每一处进行修改会很麻烦,所以我们用一个变量替代,增强可读性同时修改起来方便。2.变量存在误操作的可能性,所以我们设计了const把一个对象转换成一个常量。从此该变量只读不能写。比如:const int buffersize = 512;buffersize=0;// erro:attempt to write to const object,所以常量在定义以后就不能修改,所以定义时必须初始化,不初始化的话会报错。
const对象默认为文件的局部变量,如果需要在其他文件中使用,需要在定义的时候加入extern前缀。
非const变量默认为extern的。