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

Масиви вказівників

У мові Сі елементи масивів можуть мати будь-який тип, і, зокрема, можуть бути вказівниками на будь-який тип. Розглянемо кілька прикладів з використанням вказівників.

Наступні оголошення змінних

int a[]={10,11,12,13,14,};

int *p[]={a, a+1, a+2, a+2, a+3, a+4};

int **pp=p;

породжують програмні об'єкти, представлені на схемі рис.1.

pp

P

.

.

.

.

.

A

11

12

13

14

15

Рис.1. Схема розміщення змінних при оголошенні.

При виконанні операції pp-p одержимо нульове значення, тому що посилання pp і p рівні і вказують на початковий елемент масиву вказівників, зв'язаного з вказівником p ( на елемент p[0]).

Після виконання операції pp+=2 схема зміниться і прийме вид, зображений на рис.2.

pp

P

.

.

.

.

.

A

10

11

12

13

14

Рис.2. Схема розміщення змінних після виконання операції pp+=2.

Результатом виконання вирахування pp-p буде 2, тому що значення pp є адреса третього елемента масиву p. Посилання *pp-a теж дає значення 2, тому що звертання *pp є адреса третього елемента масиву a, а звертання a є адреса початкового елемента масиву a. При звертанні за допомогою посилання **pp одержимо 12 - це значення третього елемента масиву a. Посилання *pp++ дасть значення четвертого елемента масиву p тобто адреса четвертого елемента масиву a.

Якщо вважати, що pp=p, то звертання *++pp це значення першого елемента масиву a (тобто значення 11), операція ++*pp змінить уміст вказівника p[0], таким чином, що він стане рівним значенню адреси елемента a[1].

Складні звертання розкриваються зсередини. Наприклад звертання *(++(*pp)) можна розбити на наступні дії: *pp дає значення початкового елемента масиву p[0], далі це значення інкрементується ++(*p) у результаті чого вказівник p[0] стане рівним значенню адреси елемента a[1], і остання дія це вибірка значень по отриманій адресі, тобто значення 11.

Лекція 16

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