2.3.3如何读懂符合类型的声明

本文介绍了C++中复合类型的声明方法,包括指针和引用的概念及其使用。解释了指向指针的指针及指向指针的引用,并给出了示例代码帮助理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2.3.3理解复合类型的声明

两种声明定义方法
1.int* p1,p2;
2.int *p1,p2;
两种方法均合法,只是侧重点不同,第一种着重强调变量具有的复合类型;第二种侧重于强调本次声明定义了一种复合类型。自己选择并坚持一种写法即可,最好不要变来变去。

一般说来,声明符中修饰符(&,*)的个数没有限制。当多个修饰符连写在一起时,按照其逻辑关系解释即可。下面将介绍一种特殊的指针和引用。

指向指针的指针
指针是内存中的对象,像其他对象一样也有自己的地址,因此允许把指针的地址在存放到另一个指针中。如**表示指向指针的指针,***表示指向指针的指针的指针。有点绕人,自己好好理解下,把握住本质就好。指针里存放的是另一个指针的地址

int ival=1024;
int *pi=&ival;//pi指向一个int型的数
int **ppi=π//ppi指向一个int型的指针
//通过*解引用访问指针的指向对象的内容
cout<<ival<<endl;//1024 直接访问
cout<<*p<<endl;//1024 通过指针间接访问
cout<<**ppi<<endl;//1024 通过指向指针的指针两级间接访问
cout<*ppi<<endl;//此时是指针p的地址

小窍门:当想访问到原对象时,声明中有几个取地址符&,访问原对象内容时就需要添加几个解引用符*。

指向指针的引用
我们反复强调了,引用本身不是一个对象,因此不能定义指向引用的指针。但指针所对象,所以存在对指针的引用,即给一个指针取了一个“外号”。

int i=42;
int *p;//此时已经创建内存空间
int *&r=p;//r是一个对指向int型指针p的引用,要把r看作指针使用
r=&i;////r引用了指针p,因此给r赋值&i,就是另p指向i
*r=0;//*r=0等价于*p=0,即将指针指向的对象i赋值为0i

tips
面对一个复杂的声明语句时,从右往左阅读有助于能清真实含义,离变量名最近的符号对变量的类型有最直接的影响。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值