C++.Бархатный путь


Массивы. Синтаксис объявления - часть 2


В этом определении массива означены лишь первые два элемента массива. Значение последнего элемента массива в общем случае не определено.

Здесь нужно отметить одну интересную особенность синтаксиса инициализатора массива. Речь идёт о необязательной запятой в конце списка инициализаторов. По-видимому, её назначение заключается в том, чтобы указывать на факт частичной инициализации массива.

Действительно, последний вариант (частично) инициализирующего оператора определения массива выглядит нагляднее: int intArray_5[3] = {1,2,};

Последняя запятая предупреждает о факте частичной инициализации массива. Затраты на связывание запятой в конце списка инициализаторов со строго определённым контекстом частичной инициализации оказываются столь значительными, что последняя запятая традиционно (по крайней мере со времени выхода "Справочного руководства по языку программирования C++") оказывается всего лишь необязательным элементом любой (в том числе и полной) инициализации.

int intArray_6[3] = {1,2,3}; int intArray_6[3] = {1,2,3,};// Полная инициализация с запятой… int intArray_6[] = {1,2,3}; int intArray_6[] = {1,2,3,};

Между этими операторами не существует никакой разницы.

А вот в таком контексте

int intArray_6[3] = {1,2,}; // Частичная инициализация массива из трёх элементов…

Последняя запятая в фигурных скобках - не более как полезное украшение. Что-то недосказанное таится в таком операторе присвоения… int intArray_7[];

А вот это некорректное объявление. Без спецификатора extern транслятор воспринимает это как ошибку. В скором времени мы обсудим причину этого явления.

| |

 




- Начало -  - Назад -  - Вперед -