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

72. Представление двумерного массива в виде одномерного. Соответствие индексов двумерного и одномерного

Двумерный массив - это одномерный массив, элементами которого являются одномерные массивы.

Элементами массива, состоящего из N элементов, являются переменные с индексами a[0],a[1],…,a[N–1]. Исходя из общего принципа размещения элементов массива в памяти (плотно и в порядке возрастания номеров), можно утверждать, что элементы двумерного массива m[3][4] займут места в памяти в следующем порядке: m[0][0], m[0][1], m[0][2], m[0][3], m[1][0], m[1][1], m[1][2], m[1][3], m[2][0], m[2][1], m[2]2], m[2][3].

73. Многомерные массивы (объявление, индексация, хранение в памяти, сортировка). Пример

тип имя [разнерN] ... [размер2] [размер1];

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

Важно знать, что в многомерных массивах требуется некоторое время на вычисление каждого индекса. Это означает, что доступ к элементу в многомерных массивах происходит медленнее, чем доступ в одномерных массивах. По этой и другим причинам, если возникает необходимость в многомерных массивах, для них чаще всего память выделяется динамически с использованием функции динамического выделения памяти.

При передаче многомерных массивов функции следует определить все размерности, кроме самой левой. Например, если массив m определен как

int m [4] [3] [6] [5];

то функция func1(), получающая m, может выглядеть следующим образом:

int func1 (int d[] [3] [6] [5])

{

...

}

74. Указатели (назначение синтаксис, операции).

Указатель – такая переменная, которая хранит адрес другой переменной. Очень часто этот адрес указывает на расположение в памяти другого объекта, например, переменной. Так если x содержит адрес y, тогда говорят, что x указывает на y.

Синтаксис.

Тип *имя; - объявление.

Если объявить указатель и не присвоить начальное значение, то он будет указывать на случайную ячейку памяти. Разыменовывать такой указатель нельзя.

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

Операция

Пример кода

*

int *p

*p

Определение указателя.

Разыменование указателя.

&

int &s=x

&x

Определение ссылки (s – другое имя x).

Получение адреса переменной x.

&

*

x&y

x*y

Бинарные операции побитового «и» и умножения.

Арифметика указателей.

Над указателями определены некоторые операции.

Любой указатель на 32-разрядной машине занимает 32 бита.

Операции.

  1. Сложение указателя с целым числом.

  2. Вычитание указателей.

int x;

int*p1=&x;

int*p2=&x;

p2+=10;

p2-p1=10;

75. Различие между указателями и ссылками.

  1. Ссылка может быть проинициализирована только один раз.

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

  3. Ссылка – разыменованный "указатель", поэтому адресная арифметика к ссылкам неприменима (операции будут применяться к тому, на что ссылается ссылка, а не к самому адресу на ссылаемый объект), а с указателем – применима.

  4. Ссылка всегда разыменована, поэтому программа некорректна, если ссылка не ссылается никуда. Не ссылающихся ни на что ссылок быть не может в корректной программе. Указатели, напротив, могут не ссылаться ни на какой объект, часто для обозначения таких указателей применяется указатель по адресу 0, он же – NULL. Корректная программа должна обязательно проверять все указатели на валидность перед их разыменованием.

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