当前位置: 代码迷 >> C语言 >> int *p[4]与int (*p)[4]有什么不同?
  详细解决方案

int *p[4]与int (*p)[4]有什么不同?

热度:434   发布时间:2007-12-08 11:17:08.0
int *p[4]与int (*p)[4]有什么不同?
int *p[4]与int  (*p)[4]有什么不同?
前者是数组指针 这毫无疑问,听说后者是指向数组的指针,为什么?
搜索更多相关的解决方案: int  

----------------解决方案--------------------------------------------------------
因为下标操作符优先级高于解引用操作符,故
前者是指针数组,数组中的每一个元素都是指向int型元素的指针。
后者定义了一个指向包含4个int型元素的指针。

[[italic] 本帖最后由 lonmaor 于 2007-12-8 16:28 编辑 [/italic]]
----------------解决方案--------------------------------------------------------
因为*P[4]中P是个数组然后再与*组合,它是一个有四个元素的指针数组,而后者是先与*组合,所以后者是一个指向四个地址的数组的指针!
----------------解决方案--------------------------------------------------------
备注: “[ ]”的优先级比“*”高。“( )”的优先级比前两者都高。

[bold]int[/bold]  * p[4];        //  指针的数组,类型为数组 p 有 4 个元素类型为 int *  
[bold]int[/bold]  (* p)[4];      //   p 指针 int [4]  ,即 p 指针 4 个 int类型

----------------解决方案--------------------------------------------------------
int  * p[4];     定义指针数组P,由4个指向整形数据的指针元素组成.
int  (* p)[4];      P为指向含4个元素的一维数组的指针变量
----------------解决方案--------------------------------------------------------
我不同意二楼的说法,我和他恰恰恰相反,我觉得是这样的,不知道大家对我的看法有什么不同吗?
----------------解决方案--------------------------------------------------------
原帖由 [bold][underline]kongxiangge22[/underline][/bold] 于 2007-12-8 16:26 发表 [url=http://bbs.bc-cn.net/redirect.php?goto=findpost&pid=1138256&ptid=191126][/url]
我不同意二楼的说法,我和他恰恰恰相反,我觉得是这样的,不知道大家对我的看法有什么不同吗?


写错了。。绕来绕去把我也绕迷了。已修正
----------------解决方案--------------------------------------------------------
回复 4# 的帖子
int  (* p)[4];      //   p 指针 int [4]  ,即 p 指针 4 个 int类型

请问怎么使用这个指针?
我尝试*p=1;编译器报错了!
warning C4047: '=' : 'int [4]' differs in levels of indirection from 'const int '
----------------解决方案--------------------------------------------------------
*(*p)=1;
这样就不会有错了.
----------------解决方案--------------------------------------------------------
回复 9# 的帖子
不理解 忘赐教
----------------解决方案--------------------------------------------------------
  相关解决方案