C++数组的指针、指针数组、指针数组的指针的声明


C++数组的指针、指针数组、指针数组的指针的声明有点绕,防止后面绕晕记不住所以记录下。

指针数组

int *ap[3];

为啥[3]要放在这里呢?[]优先级要高于*,所以[3]表明三个元素的数组,剩下的描述元素的类型,*表明数组元素为指针,int表明指针指向int类型。所以该声明为:具有3个指向int类型的指针的数组。

数组的指针

int (*pa)[3];

[3]表明为三个元素的数组,剩下的部分就是描述元素的类型。(*pi)是一个整体,表明是一个指针变量,变量名为pa。int表明元素为int类型。解释为:具有3个int类型元素的数组的指针。

指针数组的指针

int *(*pap)[3];

知道指针数组的声明*ap[3],那么替换ap变量为一个指针(*apa),代入进去为*(*apa)[3]就是指针数组的指针了。
反过来,我们将上面的(*pap)看成一个叫pa的变量名为:int *pa[3];它就是具有3个指向int类型的指针的数组,那么该数组的引用,就将pa这个变量名变为一个指针变量,替换为*pap然后代进去加上括号就是上面的声明了int *(*pap)[3];:一个具有3个指向int类型的指针的数组的指针。

类型指针啥的太麻烦了,有点记不住,C++11版本新增的auto关键字可以省略类型的定义,让编译器来判定值的类型。

关于CLion编辑器本地变量定义小技巧

上面一堆指针啥类型啥的,太麻烦了。如果不适用auto关键字,想要自己显示的定义一个复杂的类型,比如"指针数组的指针类型"或者"函数指针数组的指针"的声明,还是比较费劲的。
CLion的自动创建本地变量的功能很有用。菜单:Main menu | Refactor | Extract | Introduce Variable...可以生成本地变量。
使用快捷键的演示如下:
在这里插入图片描述
使用CLion的快速创建变量的功能,很方便的就根据右值创建了左边的符合的类型变量。

CLion设置里面keymap搜Introduce Variable可以看到你的快捷键。

代码

int a[3];                          //3个int类型元素的数组
a[0]=1;
a[1]=2;
a[2]=3;
int (*pa)[3] = &a;                 //3个int类型元素的数组的指针
int *ap[3] = {&a[0], &a[1], &a[2]};//3个int类型元素的指针的数组
int *(*pap)[3] = ≈              //3个int类型元素的指针的数组的指针
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值