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

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

Индексы у одномерных массивов в языке Си начинаются с 0, а в программе одномерный массив объявляется следующим образом: <тип> < ID массива>[размер]={список начальных значений}; где тип – базовый тип элементов (целый, вещественный и т.д.); размер – количество элементов в массиве. Список начальных значений используется при необходимости инициализировать данные при объявлении, он может отсутствовать. Размер массива может задаваться константой или константным выражением. Нельзя задавать массив переменного размера. Для этого существует отдельный механизм – динамическое выделение памяти. Пример объявления массива целого типа: int a[5]; В данном массиве первый элемент - а[0], второй – а[1], … пятый - а[4]. Обращение к элементу массива в программе на языке Си осуществляется в традиционном для многих других языков стиле - записи операции

обращения по индексу, например: a[0]=1; a[i]++; a[3] = a[i] + a[i+1];

Декларация массива целого типа с инициализацией значений: int a[5]={2, 4, 6, 8, 10};

Если в группе {…} список значений короче, то оставшимся элементам присваивается 0. В языке Си с целью повышения быстродействия программы отсутствует механизм контроля границ измененит индексов массивов. При необходимости такой механизм должен быть запрограммирован явно.

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

Декларация многомерного массива в общем виде: <тип> < ID >[размер 1][размер 2]…[размер N];

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

Например, элементы двухмерного массива b[3][2] размещаются в памяти компьютера в таком порядке:

b[0][0], b[0][1], b[1][0], b[1][1], b[2][0], b[2][1]. Следующий пример иллюстрирует определение массива целого типа, состоящего из трех строк и четырех столбцов, с одновременной инициализацией:

int a[3][4] = {{1,2 }, {9,-2,4,1},{-7 } }; Если в какой-то группе { } список значений короче, то оставшимся

элементам присваивается 0.

45 Структуры. Вложенные структуры

Структуры

Структура - это составной объект языка Си, представляющий собой совокупность логически связанных данных различного типа, объединенных в группу под одним идентификатором. Данные, входящие в эту группу, называют полями. Термин «структура» в языке Си соответствует двум разным по смыс-

лу понятиям: - структура – обозначение участка оперативной памяти, где располагаются конкретные значения данных; в дальнейшем – это структурная переменная, поля которой располагаются в смежных областях памяти; - структура – правила формирования структурной переменной, которыми руководствуется компилятор при выделении ей места в памяти и организации доступа к ее полям.

Вложенные структуры

Структуры могут быть вложенными, т.е. поле структуры может быть связующим полем с внутренней структурой, описание которой должно предшествовать по отношению к основному шаблону. Например, в структуре person, содержащей Ф.И.О. и дату рождения, сделать дату рождения внутренней структурой date по отношению к структуре person. Шаблон такой конструкции будет выглядеть следующим образом:

struct date {

int day, month, year;

};

struct person {

char fio[40];

struct date f1;

} ;

Объявляем переменную и указатель на переменные такой структуры: struct person a, *p;

Инициализируем указатель p адресом переменной а:

p = &a;

Тогда обращение к полям структурной переменной a будет следующим:

a .fio, a.f1.day, a.f1.month, a.f1.year;

или p->fio, p->f1.day, p->f1.month, p->f1.year.

Можно в качестве связи с вложенной структурой использовать указатель на нее:

struct date {

int day, month, year;

};

struct person {

char fio[40];

struct date *f1;

} ;

Тогда обращение к полям будет следующим:

a .fio, a.f1->day, a.f1->month, a.f1->year;

или p->fio, p->f1->day, p->f1->month, p->f1->year.

Использование typedef упрощает определение структурных переменных, например:

typedef struct person {

char fio[40];

int day, month, year;

} W ;

здесь W - созданный пользователем тип данных - структура с указанными полями, и для нашего примера:

W t1, t2; - декларация двух переменных типа W.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]