C指针问题迷惑中,(*p)[4]和*p到底有什么区别?山东
发布网友
发布时间:2024-10-06 01:30
我来回答
共2个回答
热心网友
时间:2024-10-07 12:34
(*p)[4] p的含义是一个指向包含四个元素的数组的指针
*p p的含义是一个指向数的指针
指向数和指向数组是不一样的概念。
为什么要用(*p)[4]这种方式呢?用一个*p,依次指一行中的每一元素,不是一样可以解决问题吗?
对*p,p此时相当于一个一维数组,
但是对(*q)[4],q相当于一个二维数组,第二维的大小是4。
p[x]是一个数
q[x]却相当于一个一维数组,该一维数组的起始地址是q+x*4
所以加入p,q指向同一个地址,区别就是
p[0]==q[0][0],p[4]==q[1][0]....
此时q可理解为指针的指针,q[x]是指针。所以q[x]与p是同种的指针。。
所以q的引用会更清楚一点,它可将一维数组用二维的方式来引用。
就说这么多吧,睡觉了,希望有帮助。。。。
自学C的时候,我指针这一章弄晕了,最后搞得我在那一周看到C教材就恶心。。一周没看过书。。。。。
◤
热心网友
时间:2024-10-07 12:35
我们先看(*p)[4],根据这个形式我们可以看出,p是一个指针,它指向一个数组,这个数组有四个元素,由于你没有写类型,所以现在只知道这是一个指向含有四个元素的数组,例如alpha (*p)[4]
的类型为alpha
而*p就是单纯的一个指针,例如alpha *p 表示这个指针指向一个alpha类型的变量
如想了解更多,联系我