我对以下代码有误解。根据我的理解,tester
声明应该返回一个指向两个元素的第一个数组的指针,即[1,2],因此*(tester+1)
应该返回[3,4],它仅包含2个元素,因此调用(*(tester + 1))[2]
有什么意义。本示例顺便打印数字5。任何澄清非常感谢。
int main() {
int tester[][2]{ 1,2,3,4,5,6 };
cout << (*(tester + 1))[2] << endl;
return 0;
}
最佳答案
声明二维数组时,所有元素都是连续的。整个数组是一个对象,因此,只要您超出行限制之一,就不会超出范围,因此只要您仍在数组中,它就会更长。因此,tester[1,1]
之后的下一个元素是tester[2,0]
,这就是(*(tester + 1))[2]
访问的内容。