假设我们有以下内容:
int array[][2]{1, 2, 3, 4, 5, 6};
cout << ( * ( array + 1 ) )[2] << endl;
我不明白为什么打印5。
我认为(数组+ 1)给我们一个int * [2]到{3,4},所以,我们可以把它看作第二行。让我们调用这个指针ptr。
(* ptr)[2]
这是说我应该取消引用ptr然后打印索引2处的内容吗?没有解除引用ptr给我一个指向3号的int *?
答案 0 :(得分:2)
(array + 1)
指向3,与(array + 1)[0]
然后:
(array + 1)[0] = 3
(array + 1)[1] = 4
(array + 1)[2] = 5
数组从0开始
答案 1 :(得分:0)
因为你有一个[] [2]的数组,所以有2个元素,你正在通过索引2访问,这实际上是第3个数字(0,1,2)