C++引用与指针

引用和指针是c++的两种复合类型

一、引用

通过引用操作,引用和变量被绑定在一起,对引用的操作就是对变量的操作。

int a=0;

int &refA=a;

int &refB=refA;//这样定义引用也是可以的,refB也绑定到了a上

int &errA;//错误

  1. 引用必须被初始化。
  2. 引用不是对象,不能再被更改。
  3. 引用只能绑定在对象上,不能绑定在字面值常量上或表达式结果上。

二、指针

指针存放某个对象的地址

int *p1,*p2;

int a=0;

p1=&a;

通过使用解引用操作符来访问变量

int b=*p;

  1. 指针可以不被初始化,那么其值是不确定的。
  2. 指针是对象,可以对指针进行更改。

 

(一)空指针

空指针不指向任何对象,如果定义了一个指针但不知道指向何处,可以用下列方法定义空指针:

int *p=nullptr;//nullptr是一种特殊类型的字面值,可以被转换成任意其他的指针类型。

int *p=0;//将指针初始化为字面值0。

(二)void*指针

void*指针可以存放任意对象的地址,但是,不能直接操作其指向的对象,因为我们并不知道它指向的对象到底是什么类型,也就无法对知道对这个对象能执行什么操作。

int a=0;

void *pv=&a;

(三)指向指针的指针

int a=0;

int *p=&a;

int **pp=&p;

(四)指向指针的引用

int *&rp=p;//从右向左看,&rp是引用,*&rp是对指针的引用,int *&rp是对整型指针的引用,总之是个引用。

对rp的操作和对p的操作是一样的:

rp=&b;//p指向b

*rp=0;//对p指向的对象赋值0

 

posted @ 2018-01-26 16:37  StormWendy  阅读(118)  评论(0编辑  收藏  举报