C++多维数组容量

C++ multidimensional array capacity

我是C++的新手,我已经开始学习数组了。这是我的数组程序:

#include <iostream>
using namespace std;
int main(){
    int arr[3][3];

    for (int i = 0; i<3; i++){

        for (int j = 0; j<3; j++){

            cout << "Enter " << j + 1 << " element of " << i + 1 << " row:";
            cin >> arr[i][j];

        }

    }

    for (int i = 0; i<3; i++){

        for (int j = 0; j<3; j++){
            cout << j + 1 << " element of " << i + 1 << "row:";

            cout << arr[i][j] << endl;


        }
    }
    system("pause");
    return 0;
}

我知道数组在 C++ 中的第一个索引是零。所以,从逻辑上讲,一个数组 arr[3][3] 应该有 4 * 4 = 16 个元素,对吧?但实际上,如果我在我的 for 周期中将 3 更改为 4,我将出现超出范围的错误。为什么会这样?我错过了什么吗? 那么,arr[3][3] 中有多少元素?

声明数组的时候,写的是元素个数(不算0,int arr[3]是3个元素的数组,只有用的时候才从0开始数(arr[2] = 666 访问第三个元素)。

So, logically, an array arr[3][3] should have 4 * 4 = 16 elements, right?

这是不正确的。

对于

int arr[3];

有效元素范围是arr[0] - arr[2]。有3个元素。

对于

int arr[3][3];

有效元素范围是arr[0][0] - arr[2][2]。共有9个元素。

I know that array's first index in C++ is zero.

你是对的。

So, logicaly, an array arr[3][3]should have 4 * 4 = 16 elements, right?

由于第一个索引是 0,arr[3][3] 将是 0,1,2 行和 0,1,2 列。所以,9个元素

查看此 link 数组教程(或一般的 C++ ☺)

http://www.cplusplus.com/doc/tutorial/arrays/