Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Массивы указателей



Как и объекты любых других типов, указатели могут быть собраны в массив. В следующем операторе объявлен массив из 10 указателей на объекты типа int:

int *x[10];

Для присвоения, например, адреса переменной var третьему элементу массива указателей, необходимо написать:

x[2] = &var;

В результате этой операции, следующее выражение принимает то же значение, что и var:

*x[2]

Возможность создания массивов указателей позволяет экономить память при использовании многомерных массивов. Массивы указателей удобны для хранения символьных строк.

По определению массива, его элементы должны быть однотипные и одинаковые по длине. Пусть необходимо определить массив для представления списка фамилий. Если определять его как двумерный массив типа char, то в определении элементов массива необходимо задать предельные размеры каждого из двух индексов, например:

char spisok[25][20];

Таким образом, количество фамилий в списке не более 25 и длина каждой фамилии не превышает 19 символов (букв). При определении массива одну из его предельных размерностей (значение самого левого индекса) можно не указывать. В этом случае количество элементов массива определяется, например, инициализацией (рис. 8):

char spisok[][20] = {"ИВАНОВ", "ПЕТРОВ", "СИДОРОВ"};

Рис. 8. Схема размещения в памяти элементов массива spisok

Теперь в массиве spisok только 3 элемента, каждый из них длиной 20 элементов типа char. В противоположность этому при определении и инициализации этими же символьными строками одномерного массива указателей типа char * память распределяется гораздо рациональнее (рис. 9):

char *pointer[] = {"ИВАНОВ", "ПЕТРОВ", "СИДОРОВ"};

Рис. 9. Схема размещения в памяти элементов с помощью массива указателей

Для указателей массива pointer, в котором 3 элемента и каждый является указателем-переменной типа char *, выделяется всего 3*sizeof(char *) байтов. Кроме того, компилятор размещает в памяти три строковые константы "ИВАНОВ" (7 байт), "ПЕТРОВ" (7 байт), "СИДОРОВ" (8 байт), а их адреса становятся значениями элементов pointer[0], pointer[l], pointer[2] (рис. 9).


Содержание

Глава III. Массивы и указатели.. 1

9. Массивы.. 1

9.1. Общие принципы организации массивов. 1

9.2. Объявление и инициализация массивов. 1

9.3. Заполнение массива данными и вывод элементов массива. 3

9.4. Типовые задачи на обработку одномерных массивов. 5

9.5. Типовые задачи на обработку двумерных массивов. 14

10. Указатели. 19

10.1. Назначение указателей. 19

10.2. Объявление и инициализация указателей. 19

10.3. Операции над указателями. 21

10.4. Выражения и арифметические действия с указателями. 22

10.5. Связь указателей с массивами. 24

10.6. Операторы new и delete. Константа NULL. 27

10.7. Динамические массивы.. 30

10.8. Массивы указателей. 34

Содержание. 36





Дата публикования: 2015-01-23; Прочитано: 263 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...