Я пытаюсь выделить массив из входов командной строки следующим образом. Но я все еще получаю предупреждения.. наклеил сообщение об ошибке ниже.. загляните в него.. какие изменения могут сделать этот код идеальным..
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
Поскольку вы используете 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];
}
}
Вам нужно использовать динамическое распределение. Вы не можете выполнять статическое распределение из ввода в командной строке.
Посмотрите здесь: Как объявить 2d-массив в C++ с помощью нового?
malloc
, поэтому вы не дадите нам полную историю, но:a
- это массивint*
, вы рассматриваете его как массивint
.