1 初始化 vs 赋值
C++语言中,初始化和赋值是两个完全不同的操作。这是一个至关重要的概念。
初始化不是赋值,初始化的含义是创建一个变量时赋予其一个初始值,而赋值的含义是把对象的当前值擦除,而以一个新值来替代。
2 声明 vs 定义
为了允许把程序拆分成多个逻辑部分来编写,C++语言支持分离式编译(separate compilation)机制,该机制允许将程序分割为若干个文件,每个文件可被独立编译。
为了支持分离式编译,C++语言将声明和定义区分开来。
extern int i; //声明
int j; //声明并定义
extern int i=0; //声明并定义
变量能且只能被定义一次,但是可以被多次声明。
3 复合类型
复合类型(compound type)是指基于其他类型定义的类型。C++语言有几种复合类型,比如:引用,指针。
3.1 引用
引用(reference)为对象起了另外一个名字,引用类型引用另外一种类型。通过将声明符写成 &d的形式来定义引用类型,其中d是生命的变量名。
int &refVal = ival; //refVal指向ival(refVal是ival的另一个名字)
一般在初始化变量时,初始值会被拷贝到新建的对象中。然而定义引用时,程序把引用和它的初始值绑定在一起,而不是拷贝。一旦初始化完成,引用将和它的初始值对象一直绑定在一起。
引用类型的初始值必须是一个对象,除特殊情况外必须类型匹配。
3.2 指针
指针本身是一个对象,允许对指针赋值和拷贝,指针无须在定义时赋初值。
定义方法:*d,d是变量名。
int *p=&ival; //p存放变量ival的地址,p是指向变量ival的指针
取地址符:&
解引用符:*