在C++中引用多维数组


int a[3][2] = {{3, 6}, {8, 4}, {7, 1}}; 
cout << *a[1] << *(*a + 1);

这是我在这里的第一个问题,所以如果我违反任何规则,请原谅我。

代码如何工作?如果有人解释多维数组中的引用是如何工作的,那就太好了。

代码的输出为 86。

a[1]

引用数组a中的第二个元素(在本例中为{8, 4}),*在它前面访问{8, 4}的第一个元素(8)。

(*a + 1)表示加一的第一个值。在这种情况下,它是指向数组开头的指针{3, 6}加 1,这意味着指向{3, 6}的第二个元素的指针。在我解释的语句中添加*意味着价值,由这个指针指出

如果这是为了教你指针是如何工作的,那没关系,但是在你的代码中最好使用类似a[1][2]的东西。

我不确定我是否解释清楚,如果你不明白,请告诉我。

请记住,指针和数组很容易混合在C++中,因为这是它从C继承的东西。因此,a[n]*(a + n)实际上是相同的,只是表达同一事物的两种不同方式,尽管可以说a[n]符号要简单得多,应该使用以澄清。

2D版本a[n][m]扩展到*(a + n)[m]或更进一步,*(*(a + n) + m)

如果m0,那么你得到*(*(a + n))

所以对于n=1m=0来说,*(*(a + 1)).

最新更新