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# 的帖子
不理解 忘赐教
----------------解决方案--------------------------------------------------------