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

Int varr[4]; // объявление массива

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

{

varr[i] = 3*arr[i]; // в цикле происходит поэлементное

// присваивание массива varr

cout<<varr[i]<<’\t’; // возможен только поэлементный вывод

// значений массива

}

  • При обращении к элементам массива автоматического контроля границ массива не производится! Программа не запретит вам обратиться к элементу varr[-1] или varr[5]. Естественно, это приведет к ошибкам, часто с непредсказуемым результатом.

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

Для определения двумерного массива надо написать следующее выражение:

Int z[3][4]; //массив из 12 целых чисел

Двумерный массив в С/С++‑ это массив массивов, т.е. каждый элемент массива z[0], z[1] и т.д. является указателем на одномерный массив. Двумерный массив располагается в памяти по строкам:

z[0]

z[0] [0]

z[0] [1]

z[0] [2]

z[0] [3]

z[1]

z[1] [0]

z[1] [1]

z[1] [2]

z[1] [3]

z[2]

z[2] [0]

z[2] [1]

z[2] [2]

z[2] [3]

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

int a[3][3]={{11,12,13},{21,22,23},{31,32,33}};

Первый индекс нумерует строки, а второй – столбцы. Таким образом, a[0][1]=12, a[2][0]=31.

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

  • Заметим, что понятие массивов в С/С++ тесно связано с указателями. Имя массива – это указатель на нулевой элемент массива. Таким образом, выражения arr и &arr[0] ‑ эквивалентны. Более подробно об этом будет сказано в разделе Динамическое определение массивов.

Двумерный массив хорошо моделирует математический объект – матрицу, поэтому используется дольно часто.

3.2.3. Строки

В языке С изначально не определен строковый тип данных. Вместо этого можно использовать так называемую С-строку – специально организованный массив символов.

  • Альтернативный способ описания строк в С++ появился вместе с классом string, нами он не рассматривается.

Инициализация строки может происходить так:

char s[100] = "пример строки";

или так:

char str[] = "объявление строки";

Неиспользуемым элементам массива s присваиваются специальные “нулевые” символы - \0. Так что в отличие от обычных массивов, конец строки можно найти по нулевому элементу. Так, последний символ строки s из предыдущего примера не ‘и’, а именно «нулевой символ» (не ноль, не пробел!)

Следующий листинг определяет длину строки по положению «нулевого» символа:

#include <iostream.h>

void main()

{

char st[]="0123456789";

cout<<st<<endl;//строку можно выводить целиком

int i=0;

while(st[i]!='\0')

i++;

cout<<i<<'\t'<<st[i];

}

На экран будет выведена строка 0123456789, затем число 10 (т.о. число элементов в символьном массиве 11), а последний, одиннадцатый символ на экране не отобразиться. Еще раз: строки всегда включают конечный нулевой символ, так что писать его при присвоении строки не требуется!

Для ввода-вывода строки используются потоковые объекты cin и cout, при этом посимвольный ввод-вывод, как для «обычных» массивов необязателен:

#include <iostream.h>

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