Shubham_Dubey Ответов: 2

Разрешена ли пустая инициализация в C для инициализации элементов массива ?


#include<stdio.h>
main()
{
    int i,arr[5]={};
    for(i=0;i<5;i++)
    {
        printf("%d\n",arr[i]);
    }
}

Этот код выдает следующие выходные данные :
0
0
0
0
0


Вопрос: разрешена ли пустая инициализация элементов массива в языке Си ?

Что я уже пробовал:

Я попытался запустить приведенный выше код на некоторых онлайн-IDE и получил те же результаты (упомянутые выше).

Ideone.com - NkJM0W-онлайн-компилятор C и инструмент отладки[^]

Я также попытался найти результат на Stackoverflow, но не смог понять ответ :
Является ли пустой список инициализаторов допустимым кодом C? - переполнение стека[^]

2 Ответов

Рейтинг:
2

Patrice T

Насколько я знаю, это не разрешено, но будьте осторожны, результат может зависеть от компилятора.

Вот справочник авторов языка:
Язык программирования Си - Википедия, свободная энциклопедия[^]
https://hassanolity.files.wordpress.com/2013/11/the_c_programming_language_2.pdf[^]
http://www.ime.usp.br/~ПФ/Керниган-Ритчи/с-Программирование-электронные книги.формат PDF[^]


Рейтинг:
0

Rick York

Мне кажется довольно бессмысленным иметь пустой инициализатор. В C и C++ вы можете написать это :

int arr[5]={0};