int (*ptr)[3] 是什么意思

 我来答
tsx86
推荐于2018-03-08 · TA获得超过2703个赞
知道小有建树答主
回答量:114
采纳率:0%
帮助的人:151万
展开全部
楼主你好。首先学习指针是有好多概念容易混淆。我来帮你区别一下:
1、int(*p)[3];------ptr为指向含3个元素的一维整形数组的指针变量(是指针)
2、int *p[3];-------定义指针数组p,该数组由3个指向整型数据的指针元素组成(是数组)
3、int(*)[3];--------实际上可以看作是一种数据类型。也就是第一个(int(*p)[3])中定义的p的数据类型
其实你要看他到底是什么,就是要看他最先和谁结合。 比如1中p先与*结合,那就说明p本质是一个指针;而2中p先与后面的[3]结合,说明他本质是一个数组。再慢慢理解。希望能帮到你。如有疑问可以再问我
来自:求助得到的回答
furious_tauren
2011-09-21 · TA获得超过4055个赞
知道大有可为答主
回答量:1913
采纳率:100%
帮助的人:763万
展开全部
这是指向整型数组的指针。

可以根据优先级来看ptr到底是什么:
int (*ptr)[3]; 因为有(),所以*ptr优先级最高,他们要首先结合,也就是说ptr首先是个指针。然后是和后面[]结合,此时可以看出他是指向数组的指针,最后通过int可以看出,他是指向整型数组的指针。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sailgaoming
2011-09-21
知道答主
回答量:18
采纳率:0%
帮助的人:5.7万
展开全部
这是定义一个指向有三个整形数数组的指针。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
手机用户33990
2011-09-22 · TA获得超过229个赞
知道小有建树答主
回答量:705
采纳率:0%
帮助的人:462万
展开全部
翻译一下:
int *ptr2 = ***;
声明一个整形指针指向某个地址;
这个地址是:(int*)((int)a+1);
(int)a,a是数组名,也是数组首地址,一般是32为的某一个数值,比如说
a =0x12345678,(int)a将a转换成整型值,0x12345678,然后将这个数值加1,
变成0x12345679,然后再将其转换成地址,兜了一大圈,其实就是将ptr2指向a的下一字节。注意不是数组的下一个元素,因为一个元素有4个字节,下一个元素地址应该是0x1234567C。

注意此处int *ptr2 = (int*)((int)a +1);
与int *ptr2 = (int*)(a +1); 的区别,前者是使之指向下一字节,后者是使之指向下一个元素。

不过,这样做藐视没什么意义。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式