Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
указатели_new - копия.docx
Скачиваний:
0
Добавлен:
11.02.2026
Размер:
233.08 Кб
Скачать

Указатель на массив. Многомерные массивы динамической памяти.

Указатель на массив – это переменная, значением которой является адрес массива. Этому указателю доступен участок памяти, выделенный под массив.

При прибавлении к такому указателю 1 получается значение адреса, большее на размер массива.

Определение указателя на массив рассмотрим на примере определения указателя ptr на массив из 6 элементов типа int:

int (*ptr) [6];

Выражение:

(long)(ptr+1) - (long) ptr == 24(байтов)

возвращает размер массива в байтах, на который ''указывает'' указатель ptr.

Многомерный динамический массив можно определить следующим образом:

new тип массива,

где тип массива – это тип элементов массива и нужное количество квадратных скобок, с константными выражениями, определяющие размеры массива.

При таком определении существуют следующие правила:

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

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

Определим трехмерный динамический массив типа int [3][2][4],

Этот массив состоит из трех подмассивов - матриц 2х4.

Определим указатель на подмассив – матрицу элементов типа int размером 2х4:

int (*p) [2] [4];

C помощью операции new выделяется участок памяти для трех матриц, причем операция возвращает адрес первой матрицы массива, который и присваивается указателю p:

p = new int [3] [2 ] [4 ]

– выделена память для массива 3x2x4 типа int

Чтобы освободить память, выделенную на массив, используем оператор:

delete [ ] p;

Формы обращения к элементам массива:

p[i][j][k],либо*(*(*(p+i)+j)+k).

В операторе:

cout<< (long) (p+1) – (long) p; //32

- размер участка памяти, на который ''указывает'' указатель p.

Определение типа массива

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

Typedef type имя_типа_элем_массива [k1] [k2] ..[kn];

Пример:

Typedef array float [3][5][2];

array– имя типа массива 3х5х2 с элементами типа float

array Mas; - определен массив Mas типа array.

Определение типа указателя на массив

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

typedef type (*имя_типа_указателя_на_массив) [k1] [k2] ..[kn];

Пример: typedef float (*tpm) [5][2];

tpm– имя типа указателя на массив 5х2 с элементами типа float

tpm pm ; - объявлен указатель такого типа