数组指针、指针数组、常量指针和指针常量记忆方法归纳

数组指针本质上是一个指针,但这个指针指向的是一个数组

指针数组本质上是一个数组,但这个数组里存放的都是指针

常量指针本质上是一个指针,但这个指针指向一个常量

指针常量本质上是一个常量,但这个常量是一个指针

从编译原理角度来看,优先级和右结合让我不再迷茫,[]优先级高于*,编译器读int *p[]的时候,先让[]与p进行左结合,然后再与结合,然后再与int结合,也就是说p首先被确定是一个数组然后该数组中的元素都是int *类型的。 
而int (*p)[],则表明p首先是一个指针了,指向的类型是一个int 

明确一个优先级顺序:()>[]>*,所以:

(*p)[n]:根据优先级,先看括号内,则p是一个指针,这个指针指向一个一维数组,数组长度为n,这是“数组的指针”,即数组指针;

*p[n]:根据优先级,先看[],则p是一个数组,再结合*,这个数组的元素是指针类型,共n个元素,这是“指针的数组”,即指针数组。

int *p[];       //指针数组,指针型数组,是一个数组,类型为*
int (*p)[];     //数组指针,数组型的指针,是一个指针,指向一个int []数组
const int p; // p 为常量,初始化后不可更改

const int* p; // *p 为常量,不能通过*p改变它指向的内容 

int const* p; // *p 为常量,同上 

int* const p; // p 为常量,初始化后不能再指向其它内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值