ПредишенСледващото

Следната верига на цитати на C ++ стандарт, която обяснява как масив елементи са инициализирани по време на инициализация на тип масив

Първото нещо, което трябва да забележите е, че масиви са модулни видове. Ето защо, на адреса в раздела, който описва инициализацията на съвкупните видове 8.5.1 инертни материали:

7 Ако има по-малко инициализиране клаузи в списъка от там са членове в съвкупност, а след това всеки член не е изрично инициализира се инициализира от скобата му-или-или equalinitializer, ако няма скоба или по-equalinitializer от празен списък с инициализатор (8.5.4).

Този откъс от стандарта казва, че ако се инициализират по-малко от елементите в масива, елементите на масивите, които нямат изрично инициализатор се инициализират, като че ли той е празен фигурни скоби за всеки елемент. Това означава, че той може да бъде представен, както следва:

Сега ние се обръщаме към обяснение на стандарта, което означава, че когато има празни скоби. В секция №3 раздел 8.5.4 Списък инициализация, е писано

- В противен случай, ако списъкът за инициализатор още няма елементи, обектът е стойност инициализира

Каква е стойността инициализира. Писано е в раздел 8.5 инициализатори стандарт

8 За стойност инициализира обект от тип Т означава:

- в противен случай, обектът се нулева инициализира.

Накрая, понятието нула-инициализират средства (8.5 инициализират)

6 до нула-инициализира обект или позоваване на тип Т означава:

- ако Т е тип скаларна (3.9), обектът се инициализира на стойността, получена чрез преобразуване на цяло число буквално 0 (нула) до Т;

Това означава, че всички елементи на масива, които не са определени изрично инициализатори се инициализират до нула. Така че в крайна сметка този пост

еквивалентна на следната позиция:

И, накрая, ние откриваме, че записът

Имайте предвид, че в С последните две записите не са равностойни. За влизането на езика С

Погрешно е и компилаторът ще издаде съобщение за грешка.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!