C ++多维数组容量

时间:2015-03-18 16:25:28

标签: c++ arrays 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]中有多少元素?

3 个答案:

答案 0 :(得分:1)

当你声明一个数组时,你会写出元素的数量(不计算0,int arr[3]是一个包含3个元素的数组。只有当你使用它们时,才从0开始计数(arr[2] = 666次访问第三要素)。

答案 1 :(得分:1)

  

所以,从逻辑上讲,数组arr[3][3]应该有4 * 4 = 16个元素,对吗?

这是不正确的。

对于

int arr[3];

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

对于

int arr[3][3];

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

答案 2 :(得分:1)

  

我知道数组在C ++中的第一个索引是零。

你是对的。

  

所以,逻辑上,数组arr [3] [3]应该有4 * 4 = 16个元素,   正确?

由于第一个索引为0,因此arr [3] [3]将为0,1,2行和0,1,2列。所以,9个元素 enter image description here

查看此链接以获取有关数组(或C ++)的教程

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