int *p[4] 与 int (*p)[4] 有何区别

C语言 码拜 10年前 (2015-05-12) 985次浏览 0个评论

20分

int *p[4]  ,, p 是4个元素的数组,每个元素类型为int *

int (*p)[4] , p 是指针, 对应类型为int [4]

20分

两者对应的是指针数组与数组指针

指针数组:数组的元素是指针变量

数组指针:指向数组的指针变量

这个简单,类型识别的依据是C语言的运算符优先级,括号优先级最高,其次是[]和.和->

int *p[4],先定位标志符p,然后根据运算符优先级确定p的结合顺序。

1)p的左边是*(指针),右边是[4],显然[]优先级较高,p与[4]结合,p[4],意思是p是长度为4的数组。

2)把p[4]看作一个整体,那么它的右边没东西了,然后看左边,*(指针),*(p[4]),数组元素的类型是指针。

3)把*(p[4])看作一个整体,右边没有,继续看左边,int,int (*(p[4])),指针的类型是int。

结论:p是长度为4的数组,数组的每个元素的类型是指针,指针指向int类型。

int (*p)[4],先定位标志符p。

1)先看p的右边,括号的优先级最高,括号内为*p,即p是指针。

2)*p看作一个整体,再往右边看,(*p)[4],指针指向长度为4的数组。

3)把(*p)[4]看作一个整体,往右看,没东西了,那就往左看,int,数组元素的类型是int。

结论:p是指针,指向长度为4的数组,数组的元素类型是int。


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明int *p[4] 与 int (*p)[4] 有何区别
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!