指针数组:数组元素为指针的数组,其本质为数组。例 int *p[3],定义了p[0],p[1],p[2]三个指针。
数组指针:数组首元素地址的指针(指向数组的指针),其本质为指针(存放的是数组首地址的地址,相当于2级指针,这个指针不可移动)。例:int (*p)[10]; p即为指向数组的指针,又称数组指针。
存储空间:数组指针只是一个指针变量,是C 语言里专门用来指向二维数组的,它占有内存中一个指针的存储空间。指针数组是多个指针变量,以数组形式存在内存当中,占有多个指针的存储空间。
数组指针和指针数组在处理同一个二维数组:数组指针的元素个数(int (*p)[n]中的n)和二维数组的列长度相同; 而指针数组的数组长度( int *p[m]中的m)和二维数组的行长度相同。
参考资料:1.https://baike.baidu.com/item/%E6%8C%87%E9%92%88%E6%95%B0%E7%BB%84/8669080?fr=aladdin
2.https://baike.baidu.com/item/%E6%95%B0%E7%BB%84%E6%8C%87%E9%92%88/4177860?fr=aladdin