从命令行输入分配2d数组

时间:2014-02-20 03:17:45

标签: c++

我试图通过以下方式从命令行输入分配数组..但我仍然收到警告..粘贴下面的错误消息..请查看它..什么更改可以使这段代码完美..

int ni = atoi(argv[1]);
int nj = atoi(argv[2]);

int *a[ni][nj];

for(i=1; i<ni; i++)
{
    for(j=1; j<nj; j++)
    {
        a[i][j] = 10*j + i;
    }
    printf("%d", a[i][j]);
}

编译器oputput:

In function main:
warning: incompatible implicit declaration of built-in function malloc
warning: assignment makes pointer from integer without a cast

2 个答案:

答案 0 :(得分:3)

由于您使用的是C ++,我建议采用以下方式:

#include <vector>
#include <iostream>

    // ...

    int ni = atoi(argv[1]);
    int nj = atoi(argv[2]);

    std::vector< vector<int> > a(ni, vector<int>(nj));

    for (int i = 0; i<ni; i++)
    {
        for (int j = 0; j<nj; j++)
        {
            a[i][j] = 10 * j + i;
            std::cout << a[i][j];
        }       
    }   

答案 1 :(得分:0)

您需要使用动态分配。您无法从命令行输入执行静态分配。

看看这里:How do I declare a 2d array in C++ using new?