【发布时间】:2011-12-03 23:06:43
【问题描述】:
已经提出了很多关于 C++ 多维数组的问题,尽管没有一个 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] 处的数组的第一个元素。
- ia[2] 只是指向该数组第一个元素的指针,所以 &ia[2] 是该指针的地址吗?正确吗?
- 在我看来,可以使用 ip,因为它的工作方式与 char * 的工作方式相同...是吗?没有?
- ip2 不正确对我来说是有道理的。对我来说,ip2 是一个指向整数的指针数组,而我在这里想要的是一个指向整数数组的指针。
- 我知道 ip3 是正确的。为什么?因为书上是这么说的。就是这样。我不明白括号的重要性。
那么括号是如何改变事物的呢?我真的在这里进行了概念性解释,因此我可以理解并在将来重用这个概念。
再次感谢大家抽出宝贵时间,我还是新手,所以如果有什么我可以做的来改善我的问题,请告诉我。
【问题讨论】:
-
cdecl 将来可能会对您有所帮助
-
第 4 个是正确的,因为在 c++ 中 operator[] 比 operator* 具有更高的优先级,所以你得到一个包含 4 个指向 int 的指针的数组
-
@SethCarnegie cdecl 很棒!谢谢!
标签: c++ pointers multidimensional-array