Согласно C99
стандартам, которые мы можем сделать этоДинамическая инициализация массива в с
int n = 0;
scanf("%d",&n);
int arr[n];
это один из способов создать динамический массив в с. Теперь я хочу, чтобы инициализировать этот массив 0
как этот
int arr[n] = {0};
Вот моя ошибка производящего компилятора. Я хочу знать, можем ли мы это сделать? Это по стандарту? Во время компиляции мы обеспечиваем достаточную память для массивов, но здесь она неизвестна во время компиляции. Как это происходит?
Если вы хотите иметь по-настоящему динамический массив, который инициализируется при создании, используйте 'calloc'. В моем компиляторе GCC ошибка «размер переменной объекта не может быть инициализирована» довольно описательна, допустимо или нет. – Nobilis
Явным образом запрещается инициализировать массив переменной длины в соответствии с ограничением 6.7.8/3 «Тип объекта, который должен быть инициализирован, должен быть массивом неизвестного размера или типа объекта **, который не является массивом переменной длины ** «. – dyp
Всегда полезно включить текст сообщения об ошибке, на который ссылается вопрос. – MikeW