![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
关于C语言指针的一个问题
我想问一下,C语言中int*p[4]和(*p)[4]有什么区别int*p[4]和int(*p)[4]...
我想问一下,C语言中
int *p[4]和(*p)[4]
有什么区别
int *p[4]和int (*p)[4] 展开
int *p[4]和(*p)[4]
有什么区别
int *p[4]和int (*p)[4] 展开
展开全部
int *p[4]指的是一个类型为整型的指针数组,换句话说,就是该数组内所有元素都是指针.
int (*p)[4].一个指向有4个整型数数组的指针.说术语恐怕难于理解.我把我对(*p)[4]的理解说下,仅供参考.
int (*p)[4]就相当于一个2维数组.为什么这么说呢?考虑下int *p和int p[4]
,对于数组p,p可以代表该数组.但对于int *p,p也可看做为数组,如果对*p做限制,指向内存的4个连续位置,则与p[4]无异.
也就是说,*p可以视做一个数组的起始地址.在*p后追加[4],就是在每一个地址后,又追加4个元素,那么抽象来看,int (*p)[4]所形成的内存分配就是一个2维数组.
从术语来看,4个整型数数组就意味着一个2维数组,由于修饰为*p,所以为指针.
说的比较乱.所以能看明白最好,看不明白我也就无能为力了,毕竟不能面对面来探讨这个问题.
int (*p)[4].一个指向有4个整型数数组的指针.说术语恐怕难于理解.我把我对(*p)[4]的理解说下,仅供参考.
int (*p)[4]就相当于一个2维数组.为什么这么说呢?考虑下int *p和int p[4]
,对于数组p,p可以代表该数组.但对于int *p,p也可看做为数组,如果对*p做限制,指向内存的4个连续位置,则与p[4]无异.
也就是说,*p可以视做一个数组的起始地址.在*p后追加[4],就是在每一个地址后,又追加4个元素,那么抽象来看,int (*p)[4]所形成的内存分配就是一个2维数组.
从术语来看,4个整型数数组就意味着一个2维数组,由于修饰为*p,所以为指针.
说的比较乱.所以能看明白最好,看不明白我也就无能为力了,毕竟不能面对面来探讨这个问题.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询