[C++]理解复合类型的声明——类型修饰符*和&的复合使用

参考:《C++ Primer》

目录

定义多个变量

指向指针的指针

指向指针的引用


定义多个变量

一条定义语句可能定义出不同类型的变量,如下:

int i = 10, *p = &i, &r = i;

上面的语句中i是一个int类型的变量,p是一个int类型的指针,r是一个int型的引用。

⭐有一种错误的观点:在定义语句中,类型修饰符(*或&)作用于本次定义的全部变量。比如:

int* p1,p2;

上面的语句*只是修饰了p1而已,对p2并不产生作用。即p1是指向int的指针,而p2是一个int型的数。

指向指针的指针

指针是内存中的对象,像其他对象一样有自己的地址,因此可以将指针地址再存放到另外一个指针当中。

**表示指向指针的指针,***表示指向指针的指针的指针。例如:

int a = 10;
int *pa = &a;//pa指向一个int型的数
int **ppa = &pa;//ppa指向一个int型的指针

解引用int 型的指针会得到一个int型的数(*pa),同样,两次解引用指向指针的指针就可以访问原始的对象(**pa)。

指向指针的引用

因为引用本身不是一个对象,因此不能定义指向引用的指针。但是指针是对象,可以有指向指针的引用。

例子:

int i = 10;
int *p; //p是一个int型指针
int *&r = p;//r是一个对指针p的引用
 
r = &i; //r引用了一个指针,因此给r赋值&i就是令p指向i
*r = 0; //解引用r得到i,也就是p指向的对象,将i的值改为0 

猜你喜欢

转载自blog.csdn.net/weixin_45922730/article/details/128424052
今日推荐