Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры программирование.doc
Скачиваний:
8
Добавлен:
17.04.2019
Размер:
257.54 Кб
Скачать
  1. Составные типы данных: массивы и строки.

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

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

МАССИВЫ

Описание одномерного массива имеет следующий вид:

тип имя[размер]

Описание двумерного массива имеет следующий вид:

тип имя [размер1] [размер2]

пример:

int my_array [3][4];

или

const int n = 3;

const int m = 4;

int my_array [n][m];

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

int v[3];

int a[3][2];

Все элементы индексируются, начиная с нуля. Описан массив v, который является вектором с элементами v[0], v[l] и v[2] типа int.

Массив a можно трактовать как двумерную таблицу (матрицу) с тремя строками и двумя столбцами. Двумерные таблицы хранятся по строкам. Обращения к элементам этой таблицы могут, например, иметь вид а[2] [1]. Имя массива является указателем на нулевой элемент.

Поскольку массивы часто образуются с помощью указателей, следует помнить, что если v -произвольный вектор, то имя его i-го элемента v[i] трактуется как выражение *(v+i), которое также может быть принято за имя элемента.

Имея это в виду, легко понять, что если a, например, массив int a[2][3], то выражение *(*(a+i)+j ) является элементом a[i][j], а выражение **a — элементом a[0][0].

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

В С++ предусмотрено несколько способов инициализации массивов:

1. Инициализация при объявлении

a) int my_array [3] = {12, 1245, 18094}; // Важно!! Следующий фрагмент кода не является правильным!!

int our_array [3];

2. инициализация в цикле.

int main(int argc, char* argv[])

{const int n = 5;

int my_array [n];

for (int i = 0; i < n; i++)

{std:: cout << "Enter" << i << "element of the my_array"

<< std::endl;

std::cin >> my_array[i];}

for (int i = 0; i < n; i++)

{std::cout << std::setw(6) << my_array[i];}

Важно!! Работая с массивами, следует иметь в виду серьезное ограничение. В С++ недопустимо копировать один массив в другой с помощью операции присваивания.

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

Многомерные массивы инициализируются так же, как и одномерные.

1. Инициализация при объявлении

int my_array [4][3] = { {12, 1245, 18094}, {2, 518, 45}, {45, 67, 45}, {34, 562, 98} };

2. Инициализация в цикле

int main(int argc, char* argv[])

{

const int row = 3;

const int column = 4;

int data [row][column];

for (int i = 0; i < row; i++)

{

for (int j = 0; j < column; j++)

{

std::cin >> data [i][j];

}