Выделить 2d массив из входов командной строки

0

Я пытаюсь выделить массив из входов командной строки следующим образом. Но я все еще получаю предупреждения.. наклеил сообщение об ошибке ниже.. загляните в него.. какие изменения могут сделать этот код идеальным..

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
  • 0
    Пожалуйста, добавьте полное предупреждение (со строкой и т. Д.). И упомяните компилятор.
  • 1
    Ваш фрагмент кода не содержит malloc , поэтому вы не дадите нам полную историю, но: a - это массив int* , вы рассматриваете его как массив int .
Показать ещё 1 комментарий
Теги:

2 ответа

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];
        }       
    }   
0

Вам нужно использовать динамическое распределение. Вы не можете выполнять статическое распределение из ввода в командной строке.

Посмотрите здесь: Как объявить 2d-массив в C++ с помощью нового?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню