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

本文详细介绍了C++中如何定义多个变量,包括普通变量、指针变量和引用变量的用法。特别地,讲解了指针的指针和指向指针的引用的概念,以及它们在内存中的表示和解引用操作。通过实例展示了如何声明和使用这些数据类型,帮助读者深入理解C++的指针和引用机制。
摘要由CSDN通过智能技术生成

参考:《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 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值