Инициализация массивов

В языке С++ массивы при объявлении можно инициализировать. Общая форма инициализации массива аналогична инициализации переменной:

тип имя_массива[размер1]...[размер№] = {список_значений};

Список_значений представляет собой список констант, разделенных запятыми. Типы констант должны быть совместимыми с типом массива. Первая константа присваивается первому элементу массива, вторая — второму и так далее. После закрывающейся фигурной скобки точка с запятой обязательна.

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

char e1[12] = "Ошибка чтения\n";

char e2[13] = "Ошибка записи\n";

char e3[18] = "Нельзя открыть файл\n";

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

Массивы переменной длины

Стандарт С++ позволяет в объявлении размера массива использовать любые выражения, в том числе такие, значение которых становится известным только во время выполнения. Объявленный таким образом массив называется массивом переменной длины. Однако переменную длину могут иметь только локальные массивы (т.е. видимые в блоке или в прототипе). Приведем пример массива переменной длины:

void f(int dim)

{

char str[dim]; /* символьный массив переменной длины */

/*... */

}

Здесь размер массива str определяется значением переменной dim, которая передается в функцию f() как параметр. Таким образом, при каждом вызове f() создается массив str разной длины.

Массивы переменной длины добавлены в С++ главным образом для поддержки численных методов обработки данных. В программировании это средство распространено достаточно широко. Однако следует помнить, что стандарт С89 и некоторые компиляторы C++ не поддерживает массивы переменной длины.

Пример

1. Подключаем библиотеки

#include <stdio.h>

2. Объявляем функцию main()

int main(void)

{

3. Объявляем две переменные t и i и маччив размером 3х4 целого типа

int t, i, num[3][4];

4. Запускаем два цикла. t изменяется от 0 до 2, I от 0 до 3

for(t=0; t<3; ++t)

for(i=0; i<4; ++i)

5. Присваиваем текущему элементу массива значение равное (t*4)+i+1

num[t][i] = (t*4)+i+1;

6. Выводим построчно содержание массива

for(t=0; t<3; ++t) {

for(i=0; i<4; ++i)

printf("%3d ", num[t][i]);

printf("\n");

}

return 0;

}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: