这两个概念有点混淆,但我们可以从本质上去理解他们。
数组指针。
它的本质是指针。下面看一个定义:
int (*p)[5];
意思为,定义一个指针p,必须使它指向一个大小为5,数据类型为int 的数组。p中存放的为数组的首地址。
有两个要点:
1、
当我们定义一个数组指针指向一个数组的时候,类型,大小一定要相对应。不然会出错。
2、
一定要指向整个数组的地址,而不是数组的首地址。
读函数:
<span style="font-size:14px;">int main()
{
char a[5] = { 'A' , 'B', 'C', 'D' };
char(*p1)[5] = &a;
char(*p2)[5] = a;// 错误,原因:指向的是数组首地址。
char (*p3)[4]=&a;//错误,原因:大小不同。
int (*p4)[5]=&a;//错误,原因:类型不同。
return 0;
}
</span>
指针数组。
它的本质是一个数组,定义:int *p1[5];
意思为,创建一个大小为5数组,数组的元素为指针(int*)。这些指针又可以指向相应类型的对象。