Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
40
Добавлен:
16.02.2016
Размер:
382.98 Кб
Скачать

Производные типы

Производные типы можно условно подразделить на две группы типов.

  • Непосредственно производные типы (directly derived types). Эти типы являются производными от некоторых существующих типов, реализуя типы указателей, ссылки, функции преобразования типов. Группу непосредственно производных типов образуют:

  • массивы (Arrays of Variables or Objects);

  • указатели (Pointers of a Given Type);

  • ссылки (References to Objects);

  • перечисления (Enumiration);

  • указатели на члены класса (Pointers to Class Members).

  • Составные производные типы (composed derivative types) образуют:

  • классы (Classes);

  • структуры (Structures);

  • объединения (Unions).

Массивы

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

Размещение элементов массива в памяти выполняется последовательно.

Имя массива определяет адрес первого элемента массива. (Имя массива нельзя указывать в левой части оператора присваивания.)

Объявление массива может иметь следующее формальное описание:

// Объявление одномерного массива тип имя_массива[размерность_N];

// Объявление одномерного массива с одновременной инициализацией

тип имя_массива[размерность_N]={значениеО, значение1,..., значение_N};

// Объявление безразмерного массива с одновременной инициализацией

тип имя_массива[]={значениеО, значение1,..., значение_N};

тип имя_массива[размерность_N]={значениеО, значение1,..., значение_N};

// Объявление многомерного массива

тип имя_массива[размерность_1N]... [размерность_МN];

// Объявление многомерного массива с одновременной инициализацией

тип имя_массива[размерность_1М]... [размерность_М] =

{ {значениеО, значение1, ..., значение_М}, ...

{значениеОN, значение1N,..., значение_NМ}};

Пример:

int ArrayOfIntl[5]; // Массив из пяти переменных типа int

cClass cObj[5]; // Массив из пяти объектов типа cClass

static float ArrayOfFl[5]; // Статический массив из пяти переменных типа float char ArrayOfChl[3]={'A','B','C'}; // Объявление и инициализация

// символьного массива

char ArrayOfCh2[]={"Text for array. \n"};

int ArrayOfInt2[2][3]={{12,10,3}, {15,4,8}};// Инициализация двумерного массива

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

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

При объявлении многомерных массивов синтаксис языка разрешает не указывать только самую левую размерность, получая ее значение из списка значений инициализации.

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

Инициализацию массива можно производить следующим образом:

  • указав во время объявления массива в фигурных скобках значения инииализации (начиная с нулевого элемента и первого столбца);

  • присвоив значения элементам массива во время выполнения программы;

  • объявив массив как глобальный или статический , инициализируемый по умолчанию (для числовых значений выполняется инициализация нулями, а для указателей - значением null).

Компилятор Visual C++ не позволяет задавать больше значений инициализации, указываемых в фигурных скобках, чем объявляемая размерность массива. Однако при задании меньшего числа значений инициализации оставшиеся значения автоматически инициализируются нулями.

Соседние файлы в папке VC++Баженова