请问 int *(p[4]) 和 int(*p)[4]的区别并举例

如题所述

)[4]、**p的区别(由于里面牵扯一些东西比较深,我简单的讲讲吧)

*p[4]是指针数组,他是数组。数组里面放的是指针,简单的说定义了4个指针,分别是*p[0] *p[1] *p[2] *p[3],相当于将这四个指针打包到这个数组中

(*p)[4]是数组指针,他是指针并且是一个指向二维数组的指针。因为以行为单位,又称行指针。
通俗点讲,后面的[4]说明他的每行有4个元素,[0]代表第一列的下标,[1]代表第二列的下标,一次类推。(*p)的意思是指针p指向第一行,*(p+1)即指向第二行,同理一次类推。那么*(p+2)[3]的意思即是指二维数组第二行第四列的元素

**p是二级指针,即指向指针的指针,他也是一个指针,主要区别在于应用的范围不同,行指针作用对象仅仅是二维数组,二级指针的应用范围就广了,比较典型的就是他可以用指针参数传递内存,指针数组和数组指针可没有这样的用法。也可以用他动态申请内存,存储二维数组元素等等

楼主耐心学习吧,只要坚持下去,这些东西都会慢慢理解的
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-03-03
int *(p[4])是指针数组,数组内存放的是四个指针
int (*p)[4]是数组指针,数组内存放的整形,而p指向该数组。
第2个回答  2011-03-03
int *(p[4]) p[0-4]的值的类型都是 int* 这个就是 int* a[4] 把int*当作类型来看
int(*p)[4] p用来指向a[N][4]的数组 这样赋值: p = a 或者p= &a[i]
第3个回答  2019-05-28
有必要正本清源:
int *(p[4]) 就是数组 加个()而已 等同于 int * p[4]
int(*p)[4] 就是指针
简单明了
相似回答