已经有很多关于C ++ Multidimension数组问题的问题,虽然没有A)完全解释了我在这里要求的内容或B)也许我只是不理解它。
我的问题:
int (*ip)[4];
我遇到的问题是了解在这种情况下在* ip周围添加括号的原因。看多维数组:
int ia[3][4];
int *ip = &ia[2];
int *ip2[4] = &ia[2];
int (*ip3)[4] = &ia[2];
ip,ip2和ip3都意图指向位置ia [2]的数组的第一个元素。
那么括号如何改变事物呢?我真的在这里做了一个概念性的解释,所以我将来可以理解并重用这个概念。
再次感谢大家的时间,我还是新来的,所以如果有任何我可以做的改进我的问题请告诉我。
答案 0 :(得分:3)
第一个:
int *ip = &ia[2];
无效。 &ia[2]
是int[4]
的地址,因此其类型为int (*)[4]
,因此无法用于初始化int *
。但是,你可以这样写:
int *ip = ia[2];
现在可以满足您的期望。
不,见上文。
确实
这是正确的,因为这是正确的语法。从中间开始,向外工作。 (*ip3)
表示ip3
是指向某事物的指针。向外工作时,它指向的是int[4]
。
答案 1 :(得分:0)
括号用于指示谁是指针。
int *ip1[4];
int (*ip2)[4];
ip1
是指向int
的4个指针的数组
ip2
是指向4 int
个数组的指针。