多维数组问题

时间:2013-11-16 11:12:42

标签: c++ arrays

好吧基本上我希望这段代码让用户每次都输入一个值到数组中,然后他们可以指定行数和列数。我想我的问题是,每次用户输入值时,它进入正确的列,但也进入两行,所以最后它只打印出用户在所有行中输入的最后一批数字。

很抱歉,如果这很难理解,因为这是我在本网站的第一篇文章,你可能会说我只是在学习c ++。所以如果你能提供帮助,我们将不胜感激。

#include <iostream>

using namespace std;

int main()
{
    int row;
    int column;
    int value[row][column];
    cout << "How Many Rows?\n";
    cin >> row;
    cout << "How Many Columns\n";
    cin >> column;
    for(int x = 0; x<row; x++) {
        for(int y = 0; y<column; y++) {
            cout << "Enter Value Now\n";
            cin >> value[x][y];
        }
        cout << endl;
    }
    cout << endl;
    for(int a = 0; a < row; a++) {
        for(int b = 0; b < column; b++) {
            cout << value[a][b] << " ";
        }
        cout << endl;
    }
}

1 个答案:

答案 0 :(得分:5)

int value[row][column];

声明一个数组,其维度基于2个未初始化的值。

如果您不必使用C风格的阵列,可以使用

std::vector<std::vector<int>> value;

并根据用户输入选择尺寸。

或者,如果像

那样分配它,可以继续使用C风格的数组
int** value;
// input row/column
value = new int*[row];
for (int i=0; i<row; i++) {
    value[i] = new int[column];
}

如果您使用后一种方法,请确保以后delete所有动态分配的内存。