复合类型指基于其他的类型定义的类型。
引用和指针的相同与不同:
- 都是实现了对其他对象的间接访问
- 引用不是对象,但是指针就是一个对象,允许对指针赋值和拷贝,而且再指针的生命周期内先后指定几个不同的对象
- 指针无需在定义时赋值,但是最好赋初值。
1.引用
一句话概括一下就是:引用不是对象,是一个已经存在的对象的别名,即就是一个名字。
int ival = 10;
int &re_ival = ival; //re_ival指向ival,是ival的另一个名字
int &re_ival; //错误:引用必须被初始化
int re_val = 11; //改变ival的值
引用必须初始化:一旦初始化完成,引用将和它的初始值对象一直绑定在一起,无法重新绑定到另一个对象。
引用只能绑定在对象而不是字面值或者某个表达式的计算结果:
int &re = 10; //错误
double a = 3.2;
int &re = a; //错误,此处引用类型的初始值对象必须是int类型
2.指针、
通常指针应该处于下面4中状态之一:
- 指向一个对象
- 空指针
- 指向紧邻对象所占空间的下一个位置
- 无效指针