Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы, часть 2.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
80.41 Mб
Скачать

Символьные массивы (строки)

При объявлении символьного массива (типа char), даже в том случае, если мы не производим его инициализации и он является локальным, все элементы массива по-умолчанию получают значение нулей-терминаторов (символов с ASCII-кодом 0). При этом, метод cout, получающий в качестве аргумента указатель на символьный массив, начинает вывод на экран с элемента, связанного с данным указателем (т.е. с начального) и продолжает до первого встреченного нуля-терминатора.

Именно это позволяет нам отправлять на вывод символьный массив, не передавая методу coutего размера.

Признаком окончания вывода является символ нуля-терминатора ('\0').

Метод cin в качестве своего аргумента также может принимать указатель на символьный массив, куда будет записана строка введённая с клавиатуры, при этом, за последним элементом строки метод cin автоматически разместит нуль-терминатор. Более того, при задании строковой константы (когда строка явно задаётся в двойных кавычках в коде программы), вслед за последним символом в строке также автоматически размещается нуль-терминатор. Соответственно, длина строки будет на один символ больше, чем мы явно укажем.

char str[] = "Privet"; // в массиве 7 элементов: 6 латинских букв и нуль-терминатор

cout << sizeof(str) << endl; // 7

cout << str << endl; // Privet - вывелась вся строка

*(str+3) = '\0'; // вместо 'v' записали нуль-терминатор в массив

cout << str << endl; // Pri - вывелась часть строки до нуль-терминатора

Обойти строку, обратившись по отдельности к каждому её символу, можно примерно так (в данном случае мы выведем на отдельной строке каждый символ и его код по символьной таблице):

char str[] = "Privet";

char* p = str;

while(*p != '\0') {

cout << *p << ' ' << (short) *p << endl;

p++;

}

Этого же результата можно было добиться более изящно (но менее понятно), совместив ряд операций (разыменование, инкремент, автоприведение к bool) в одной строке:

char str[] = "Privet";

char* p = str - 1;

while(*++p) {

cout << *p << ' ' << (short) *p << endl;

}

Вывод будет таким:

P 80

r 114

i 105

v 118

e 101

t 116

Двумерные массивы в С++

До этого момента мы рассматривали одномерные массивы, которыми не всегда можно ограничиться. Допустим, необходимо обработать некоторые данные из таблицы. В таблице есть две характеристики: количество строк и количество столбцов. Также и в двумерном массиве, кроме количества элементов массива, есть такие характеристики как, количество строк и количество столбцов двумерного массива. То есть, визуально, двумерный массив — это обычная таблица, со строками и столбцами. Фактически двумерный массив — это одномерный массив одномерных массивов. Структура двумерного массива, с именем a, размером m на n показана ниже (см. Рисунок 4).

Рисунок 4 — Массивы в С++

где, m - количество строк двумерного массива; n - количество столбцов двумерного массива; m * n - количество элементов массива.

1

2

// синтаксис объявления двумерного массива

/*тип данных*/ /*имя массива*/[/*количество строк*/][/*количество столбцов*/];

В объявлении  двумерного массива, также как и в объявлении одномерного массива, первым делом, нужно указать:

  • тип данных;

  • имя массива.

После чего, в первых квадратных скобочках указывается количество строк двумерного массива, во вторых квадратных скобочках — количество столбцов двумерного массива. Двумерный массив визуально отличается от одномерного второй парой квадратных скобочек. Рассмотрим пример объявления двумерного массива. Допустим нам необходимо объявить двумерный массив, с количеством элементов, равным 15. В таком случае двумерный массив может иметь три строки и пять столбцов или пять строк и три столбца.

1

2

// пример объявление двумерного массива:

int a[5][3];

  • a - имя целочисленного массива

  • число в первых квадратных скобках указывает количество строк двумерного массива, в данном случае их 5;

  • число во вторых квадратных скобках указывает количество столбцов двумерного массива, в данном случае их 3.

1

2

// инициализация двумерного массива:

int a[5][3] = { {4, 7, 8}, {9, 66, -1}, {5, -5, 0}, {3, -3, 30}, {1, 1, 1} };

В данном массиве 5 строк, 3 столбца. после знака присвоить ставятся общие фигурные скобочки, внутри которых ставится столько пар фигурных скобочек, сколько должно быть строк в двумерном массиве, причём эти скобочки разделяются запятыми. В каждой паре фигурных скобочек записывать через запятую элементы двумерного массива. Во всех фигурных скобочках количество элементов должно совпадать. Так как в массиве пять строк, то и внутренних пар скобочек тоже пять. Во внутренних скобочках записаны по три элемента, так как количество столбцов — три. Графически наш массив будет выглядеть, как двумерная таблица (см. Рисунок 5).

Рисунок 5 — Массивы в С++

В каждой ячейке двумерного массива показано значение, в нижнем правом углу показан адрес данной ячейки. Адресом ячейки двумерного массива является имя  массива, номер строки и номер столбца.

40.

Функция — это определенная группа операций с уникальным именем, которая может:

  1. Вызываться по имени в любом месте программы.

  2. Получать определенный набор значений из внешней программы в момент вызова.

  3. Возвращать в качестве значения некоторый результат заранее заданного типа.

Также функцию можно рассматривать как операцию, созданную самим разработчиком.

Известный примером функции является main. Она автоматические вызывается при запуске программы.

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