我对以下代码有误解。根据我的理解,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]访问的内容。

10-07 19:52
查看更多