Инициализация одномерных массивов

Термином «инициализация» обозначают возможность задать начальные значения элементов массива без программирования соответствующих действий. Например, не прибегая к программным средствам типа присвоения значений в цикле или считывания данных из внешнего источника (файл, клавиатура, блок данных).

В С++ одновременно с объявлением массива можно задать начальные значения всех элементов массива или только нескольких первых его компонент.

Например:

float t[5]={1.0, 4.3, 8.1, 3.0, 6.74};

char b[7]={'П','р','и','в','е','т'};

/*в данных примерах длину массива компилятор вычисляет по количеству начальных значений, перечисленных в фигурных скобках*/

int d[10]={1, 2, 3};

char a[10]="Привет";

/*в данных примерах определяется значение только заданных переменных d[0],d[1],d[2] и a[0],a[1],...,d[9], остальные элементы не инициализируются*/

Если в определении массива явно указан его размер, то количество начальных значений не может быть больше количества элементов в массиве.

Пусть необходимо проинициализировать массивы для создания таблицы сообщений об ошибках:

char e1[12] = "read error\n";

char e2[13] = "write error\n";

char e3[18] = "cannot open file\n";

Очевидно, что подсчитывать «вручную» количество символов в каждом сообщении для подсчета размерности массивов очень трудоемко. Однако можно заставить С++ автоматически определить размеры этих массивов с помощью инициализации безразмерных массивов. Для этого в операторе инициализации не надо указывать размер массива, и С++ автоматически создаст массив, который сможет содержать присутствующий инициализатор. Используя этот подход, получим следующую таблицу сообщений:

char e1[] = "read error\n";

char e2[] = "write error\n";

char e3[] = "cannot open file\n";

Компилятор С++ сам сформирует нужное значение по количеству инициализирующих данных. В нашем случае под массив e2 будет отведено 13 байтов, включая последний байт с нулевым кодом, завершающий каждую строку. Оператор

printf("%s имеет длину, равную %d\n",e2,sizeof (e2));

выведет на экран

write error

имеет длину, равную 13

Метод инициализации безразмерных массивов не только менее трудоемок, но и позволяет заменить любое сообщение, без перерасчета размера соответствующего массива.

 








Дата добавления: 2015-02-16; просмотров: 730;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.007 сек.