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)
。
如果m
是0
,那么你得到*(*(a + n))
。
所以对于n=1
m=0
来说,*(*(a + 1))
.