Ref
原生指针
c++原生指针来源于c语言,常与取地址运算符&
搭配使用,基本操作有修改指针指向,解引用操作。常用于获取动态内存分配得到的地址、减少数据拷贝操作(如函数传参)等。
int a=5,b=7;
int *p=&a;//取地址
*p=15; //解引用
p=&b;
*p=17;
引用
引用是c++有而c没有的语法,引用在语义上是等价于被引用对象,对引用的操作即是对被引用对象内存的操作。引用在底层是指针,但是在行为上与指针不同而与被引用对象相同。如下例:
int a=7,b=8;
int &ref=a;
ref=10;
int *pb=&b;
int vc[5]={0,1,2,3,4};
int *pc=vc;//指向vc[0]
int &rc=vc;//指向vc[0]
pc++;//pc指向下vc[1]
rc++;//rc仍指向vc[0],++操作修改的是被指对象的值。vc[0]变为1;
引用的独特之处在于,引用被定义后,不可更改所指(其行为与被引用对象相同,没有此操作)。
智能指针
智能指针是c++2.0的新特性之一,其最大的特点在于其结合了指针和对象构造析构的优点RAII,使得其在其生存期结束时可以及时释放其所管理的资源(动态内存分配得到的资源)。常用智能指针有unique_ptr<T>、shared_ptr<T>和weak_ptr<T>。
网友评论