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*  指针

  复杂复合类型的声明  

    

  

  

做一个简单的人,踏实而务实。不沉溺幻想。不庸人自扰

原文地址:https://www.cnblogs.com/wds128/p/5264120.html