#arrays #c
#массивы #c
Вопрос:
Я читал, что для многомерных массивов C, за исключением первого измерения, другие размеры массива должны быть фиксированными, т. Е. Связанными с исследованием выше, я написал следующую программу:
#include<stdio.h>
int main() {
int N;
double data2D[4][N];
scanf("%d",amp;N);
int i=0,j=0;
for(i=0;i<4;i )
{
for (j=0;j<N;j )
data2D[i][j]=i*N j;
printf("[%d,%d]n",i,j);
}
double Number=data2D[3][0];
printf(" the value=%fn",Number);
}
Я запустил приведенный выше код и его варианты со значением N, равным 5.
Когда я запустил приведенный выше код, я получил следующий вывод:
[0,1]
[1,0]
[2,0]
[3,0]
the value=0.000000
Когда я переместил scanf перед объявлением массива, я получаю
[0,5]
[1,5]
[2,5]
[3,5]
the value=15.000000
[correct!]
Используя исходную программу, я переместил «int N;» перед main(), я получаю
[1104140288,8388609]
the value=0.000000
Есть ли какое-либо объяснение вышесказанному, особенно последним 2? Какое правило указано в начале моего сообщения?
Спасибо
Комментарии:
1.
int N; double data2D[4][N]; scanf("%d",amp;N);
N
Перед определением массива требуется значение. Если вы позже измените значение размераN
массива, это не изменится.2. да, это то, что я прочитал. Но моя программа отлично работала во втором тесте, см. Выше
3. Это то, что я имел в виду.
N
должно иметь значение, которое вам нужно, прежде чем вы определите массив.4. Короче говоря, ставьте
double
строку заscanf
строкой. ЗатемN
будет иметь значение, котороеdata2D
будет определено с правильными / желаемыми размерами.5. @Погода,@Крейг. Спасибо. Я вас полностью понимаю. Не должен ли я много читать о результатах 2 других тестов (что меня больше беспокоило)