Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы по инфе.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
469 Кб
Скачать
☆

27. Структурный тип данных

Для определения структурного типа используется ключевое слово struct:

struct имя_структурного_типа

{

описание поля1;

. . .

описание поляn;

}

При определении структурной переменной язык C++ резервирует для нее место в памяти. Если же был описан только структурный тип, а ни одной переменной данного типа определено не было, то место в памяти не выделяется.

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

Доступ к значениям полей структурного типа осуществляется с помощью операции точка.

28. Массивы в языке C++. Связь массивов и указателей

В Си существует связь между указателями и массивами, и связь эта настолько тесная, что эти средства лучше рассматривать вместе. Любой доступ к элементу массива, осуществляемый операцией индексирования, может быть выполнен с помощью указателя.

Объявление int a[10] определяет массив a размера 10, т. е. блок из 10 последовательных объектов с именами a[0], a[1], ..., a[9].

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

pa = &a[0];

ра и a имеют одно и то же значение. Поскольку имя массива является синонимом расположения его начального элемента, присваивание pa=&a[0] можно также записать в следующем виде:

pa = a;

Кроме того, a[i] можно записать как *(a+i). Компилятор автоматически приводит запись первого вида ко второму.

29. Многомерные массивы

Многомерные массивы в C++ рассматриваются как массивы, элементами которых являются массивы. Определение многомерного массива должно содержать информацию о типе, размерности и количестве элементов каждой размерности.

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

int MyArray[3][3][3] = {

{{0, 1}},

{{100}, {200, 210}, {300}},

{{1000}, {2000, 2100}, {3000, 3100, 3200}}

};

MyArray[0][0][0] == 0

MyArray[0][0][1] == 1

MyArray[1][0][0] == 100

MyArray[1][1][0] == 200

MyArray[1][1][1] == 210

MyArray[1][2][0] == 300

MyArray[2][0][0] == 1000

MyArray[2][1][0] == 2000

MyArray[2][1][1] == 2100

MyArray[2][2][0] == 3000

MyArray[2][2][1] == 3100

MyArray[2][2][2] == 3200

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

30. Строки и массивы символов

Символ – элементарная единица, некоторый набор которых несет определенный смысл. В языке программирования С++ предусмотрено использование символьных констант. Символьная константа – это целочисленное значение (типа int) представленное в виде символа, заключённого в одинарные кавычки, например 'a'. В таблице ASCII представлены символы и их целочисленные значения.

Строки в С++ представляются как массивы элементов типа char, заканчивающиеся нуль-терминатором \0 называются С строками или строками в стиле С. \0 — символ нуль-терминатора.

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

При объявлении строки не обязательно указывать её размер, но при этом обязательно нужно её инициализировать начальным значением. Тогда размер строки определится автоматически и в конец строки добавится нуль-терминатор.