int (*ptr)[3] 是什么意思
4个回答
展开全部
来自:求助得到的回答
展开全部
这是指向整型数组的指针。
可以根据优先级来看ptr到底是什么:
int (*ptr)[3]; 因为有(),所以*ptr优先级最高,他们要首先结合,也就是说ptr首先是个指针。然后是和后面[]结合,此时可以看出他是指向数组的指针,最后通过int可以看出,他是指向整型数组的指针。
可以根据优先级来看ptr到底是什么:
int (*ptr)[3]; 因为有(),所以*ptr优先级最高,他们要首先结合,也就是说ptr首先是个指针。然后是和后面[]结合,此时可以看出他是指向数组的指针,最后通过int可以看出,他是指向整型数组的指针。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这是定义一个指向有三个整形数数组的指针。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
翻译一下:
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); 的区别,前者是使之指向下一字节,后者是使之指向下一个元素。
不过,这样做藐视没什么意义。
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); 的区别,前者是使之指向下一字节,后者是使之指向下一个元素。
不过,这样做藐视没什么意义。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询