指针数组、数组指针、指针常量、常量指针的区别

关于指针数组和数组指针,指针常量和常量指针的区别,这两对组合我们经常会混淆。但在记忆这组过程中我发现对他们的翻译其实是很准确的,完全可以根据字面得出他们的含义和区别。

数组指针是数组修饰指针,本体是一个指针,这个指针指向的是数组。
例:int( * p)[n]; 表示了p这个指针指向了一个长度为n的int数组
指针数组则是指针修饰数组,本体是一个数组,这个数组的成员是指针。

可以这样理解:红苹果和苹果红。
红苹果:是指红色的苹果,指苹果,但苹果是红色的。
苹果红:是指颜色,一种红色。但这种红色是苹果的红色。

类似的苹果绿和绿苹果。通过这种记忆就可以分清楚这四者的区别:
指针数组:数组,但是数组的成员是指针。
数组指针:是一个指针,但是指向的是一个数组。
指针常量:本体是一个常量,这个常量是一个指针。
常量指针:本体是一个指针,这个指针指向的是一个常量。

对于指针常量和常量指针的说明:
指针常量根据上面的我们可以知道就说一个常量,这个常量其实是一个指针(地址),所以指针常量指向的位置不能改变,但对应地址的值可以改变;
常量指针则是这个指针指向了一个常量,这个指针指向的内容不能改变,但是可以改变指针指向。

而且我们能发现名称其实也是遵循书写逻辑的

int* p[n];//"*"在前"[]"在后 对应了名称指针数组
const int* p;//const在*前面即常量指针
int* const p;//*在const前面即指针常量


欢迎指正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值