Насколько я знаю, следующий код не должен запускаться.Объявление массива размера в c
Первая проблема заключается в объявлении «int i» внутри цикла, а не в стартовом коде.
Следующая проблема заключается в том, что размер массива определяется во время выполнения, и поэтому мы должны использовать динамическое распределение.
Ожидается, что я получу «сегментный fualt».
я запустить его с помощью команды:
gcc -Wall commandLineArgument.c -o ex1
int main(void){
int size=0;
printf("enter number:\n");
scanf("%d",&size);
printf("The size is: %d\n",size);
int arr[size];
for(int i= 0;i<size;i++)
{
arr[i] = 5;
}
for(int i= 0;i<size;i++)
{
printf("%d,",arr[i]);
}
printf("\n");
return 0;}
редактировать если переменной длины массивы были поддержаны в C, так как C99 тогда как код обновления работает?
gcc -Wall -std=c89 commandLineArgument.c -o ex1
int main(void){
int i;
int size=0;
printf("enter number:\n");
scanf("%d",&size);
printf("The size is: %d\n",size);
int arr[size];
printf("The size of arr: %lu\n",sizeof(arr));
for(i= 0;i<size;i++)
{
arr[i] = 5;
}
for(i= 0;i<size;i++)
{
printf("%d,",arr[i]);
}
printf("\n");
return 0;}
Возможный дубликат [Сохранять значения массива из пользовательских длин массивов] (http://stackoverflow.com/questions/18951151/store-array-values-from-user-defined-array-lengths) –
и так, что ваш вопрос? – artm
Для первой части это разрешено в C, но не в C++. Для второй части каждый определенный «i» имеет область действия соответствующего цикла. –