数组指针与指针数组的区别

什么是数组指针?什么是指针数组?是指针还是数组,大多数初学者都容易混淆;下面将进行详细叙述:

数组指针

数组指针是指针还是数组?

答案是:指针

我们来看下面案例:

整形指针:能够指向整形数据的指针;

浮点型指针:能够指向浮点型数据的指针;

那么,数组指针是指向数组的指针,存放的是数组的地址。

指针数组

指针数组:是·数组,存放元素的地址。

我们来看下面代码:

从上面例子来看,指针数组是指针变量以数组的形式存储在内存中;

那么二者之间的表达形式是否相同?我们来看实例:

前者为指针数组,后者为数组指针;(*p)表示指向的数组类型为int *;[10]表示指向的数组为10个元素;

二者之间的形式存在差异的原因是什么?

首先,我们需要确定一个优先级问题:()>[]>*

*p[n]:我们来根据优先级排序可知,首先,[]>*,p是一个数组,数组中元素类型为指针类型,一共n个元素;

(*p)[n]:从上述可知,()>[]>*,p是一个指针,指针指向的是一个数组,数组的长度为n;

由上述可知,指针数组是一个数组,数组中存储是指针,其在编辑器中所占的内存有多少字节由数组本身决定;而数组指针是一个指针,指针指向一个数组,在32位系统中占4个字节,而数组所占字节的大小还需要进一步判定;

经过以上了解,我们来看以下代码:

上述代码是对此次的总结,那么它们分别是什么?

int arr[5]:arr是一个整型数组;

int *p1[10]:p1是一个数组,共10个·元素,每个元素类型为int *;

int (*p2)[10]:p2是一个指针,指针指向的是一个数组,数组中10个元素类型为int;

int (*p3[10])[5]:p3是一个数组,共10个元素,每个元素是一个数组指针,该数组指针指向的共5个元素,每个元素类型为int。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值