Объявление глобального массива внутри if язык C
есть следующий код:
printf("Введите размер первой матрицы. Если размер неизвестен, введите 0");
scanf ("%d", &n1);
if (n1)
{
scanf ("%d", &m1);
static int first_matrix[n1][m1];
}
else
{
static int first_matrix[100][100];
}
Далее происходит запись данного массива:
for (i=0; i<n1; i++)
{
for (j=0; j<m1; j++)
scanf ("%d", &first_matrix[i][j]);
}
Компилятор выдает ошибку
error: ‘first_matrix’ undeclared
т.к. массив объявляется внутри if, соответственно, насколько я понимаю, при выходе из if он пропадает. Однако я никак не могу придумать, как сделать по-другому, и при этом не знаю, как объявить массив глобально, что б он не пропал. Если есть возможность данный код переделать, либо объявить массив, который не исчезнет, то прошу объяснить, как. Заранее спасибо за ответ.
Ответы (1 шт):
Автор решения: AlexGlebe
→ Ссылка
# include <stdio.h>
# include <stdlib.h>
int main(){
printf("Введите размер первой матрицы. Если размер неизвестен, введите 0");
int n1,m1;
// опрашиваем размеры
scanf ("%d", &n1);
if (n1)
{
scanf ("%d", &m1);
}
else
{
n1 = 100 ;
m1 = 100 ;
}
// выделяем память под массив NxM
// массивы плавающего размера не могут быть статическими
int ( * first_matrix ) [ m1 ] = malloc(sizeof(int[n1][m1]));
int i,j;
for (i=0; i<n1; i++)
{
for (j=0; j<m1; j++)
scanf ("%d", &first_matrix[i][j]);
}
// освобождаем память
free(first_matrix);
}