二维阵列初始化?

时间:2017-05-03 17:09:20

标签: c++ arrays

如何通过从用户获取Array的元素来初始化2d数组?

#include <iostream>
using namepace std;
int main()
{
    int row, col;
    int arr[][];
    for (int i = 0; i < row; i++) {
        for (int j = 0; j < col; j++) {
            cout << "Elements of Array :" << ' ';
            cin >> arr[i][j];
        }
    }
    return 0;
}

2 个答案:

答案 0 :(得分:1)

与c#不同,c ++不能用变量初始化数组;价值必须得到解决。 与任何语言相关的问题一样,总有一种方法可以绕过这个问题。 在这种情况下,最好的方法是使用指针并创建自己的动态数组。

#include <iostream>
using namespace std;
int main()
{
    int row, col;
    cout << "Number of rows : ";
    cin >> row;
    cout << "Number of columns : ";
    cin >> col;
    //init the pointer array
    int **arr =new int*[row] ;
    for (int i = 0; i < row; i++) 
    {
        arr[i] = new int[col];// init the columns for each row
        for (int j = 0; j < col; j++) 
        {
            cout << "Enter value for row " << i << " column " << j << " : ";
            cin >> arr[i][j];
        }
    }
    cout << "Elements of Array :" << endl;
    for (int i = 0; i < row; i++) 
    {
        for (int j = 0; j < col; j++) 
        {
            cout << arr[i][j] << " ";
        }
    }
    cout << endl;
    return 0;
}

答案 1 :(得分:0)

以这种方式初始化时,必须指定2D数组的边界。

使用int arr[][]替换int arr[row][col]可以解决您的问题,假设行数和列数可用。

以下代码可能会有所帮助:

    #include <iostream>
    using namespace std;
    int main()
    {
        int row, col;
        cout << "Number of rows : ";
        cin >> row;
        cout << "Number of columns : ";
        cin >> col;
        int arr[row][col];
        for (int i = 0; i < row; i++) {
            for (int j = 0; j < col; j++) {
                cout << "Enter value for row " << i << " column " << j << " : ";
                cin >> arr[i][j];
            }
        }
        cout << "Elements of Array :" << endl;
        for (int i = 0; i < row; i++) {
            for (int j = 0; j < col; j++) {
                cout << arr[i][j] << " ";
            }
            cout << endl;
        }
        return 0;
    }