C++--------复合类型
复合类型:基于其它类型定义的类型。
1.引用(reference)
含义:对象的另外的名字,引用另外一种类型,使用“&声明符”的形式定义。
引用即别名,引用不是一个对象,只是已经存在的对象的另外一个名字,因此定义引用必须初始化,且不能定义引用的引用。
一般初始化变量,是将初始值拷贝到新对象中去,而定义引用时,只是把引用与初始值绑定,也因此不能将引用重新绑定到另外一个对象上。
引用的赋值,即把值赋给与引用绑定的对象赋值。
获取引用的值,即获得与引用绑定的对象的值。
引用的类型要和与之绑定的对象的类型严格匹配。
引用只能绑定到对象上,不能绑定到字面值或表达式上。
例子:
int a=2;
int &refa=a; //refa指向a,是a的另外的名字
int &refb; //错误,引用必须初始化。
refa =3; //给引用赋值,即给引用指向的对象赋值a为3,等同于 a=3;
int &refc = 20; //错误,引用不能使用字面值初始化。
double d = 3.14;
int &refd = d; // 错误,引用的类型要和与之绑定的对象的类型严格匹配
2.指针
含义:指向另外一种类型,与引用类似,都是间接的访问所引用或指向的对象。
引用与指针的区别:
--指针本身是一个对象,允许对指针赋值和拷贝,而且在指针的生命周期内可以指向不同的对象。
--指针无须在定义时初始化。与其它内置类型一样。
获取对象的地址:取值符&
指针的值:即地址属于下面四种状态之一;
--指向一个对象
--指向紧邻对象所占空间的下一个位置。
--空指针,意味着指针没有指向任何对象。
--无效指针,不属于上面情况的其它值。
使用指针访问对象:解引用符 *
空指针
--0
--NULL,预处理变量,在cstdlib中定义
--nullptr
给指针赋值
指针的操作
void* 指针
复杂复合类型的声明
做一个简单的人,踏实而务实。不沉溺幻想。不庸人自扰