Программа, над которой я работаю, требует от пользователя ввода целочисленного значения, а затем на основе этого значения печатает массив нулей. Я смог сделать это, когда размер массива задан, однако, когда вы пытаетесь сделать это на входе пользователя, я получаю ошибки компилятора. Я попытался исправить ошибку, но я ничего не понял, так как большинство исправлений используют dynamic memory allocation
, которые мы еще не научили использовать. Это код, который я придумал до сих пор.Размер массива на основе пользовательского ввода
В моих попытках выяснить, почему я получаю ошибки, я обнаружил, что если я не инициализирую массив с 0
, массив печатается на размер, который вводит пользователь, однако, конечно, номера выходных данных массива абсолютно случайны.
Когда у меня есть размер инициализированного массива, я получаю ошибку variable-sized object may not be initialized
с небольшой стрелкой, указывающей на j
в квадратных скобках в int j, ar[j]={20};
.
Есть ли другой способ, который не использует dynamic memory allocation
?
#include <stdio.h>
int main(void){
int i;
int j, ar[j]={0};
printf("Please enter the value:");
scanf("%d",&j);
for(i=0; i<j;i++){
printf("%i\n",ar[j]);
}
Не получаю ли я ту же ошибку, так как я до сих пор не использовал ничего другого, просто переупорядочил его? – sandalwood
@BLUEPIXY Сделал это. Благодаря !! – ameyCU
@sandalwood Это не даст ошибки, я полагаю. Сначала он дал ошибку, потому что 'j' был там неопределенным. – ameyCU