Розглянемо ще один фрагмент програми:
int theVariable = 5;
int * pPointer = theVariable;
Мал. 8.3. Схема розподілу пам'яті
Звернення до даних через покажчики
Лістинг 8.2. Звернення до даних через покажчики
1: // Лістинг 8.2. Використання покажчиків
5: typedef unsigned short int USHORT;
8: USHORT myAge; // змінна
9: USHORT * pAge = 0; // покажчик
11: cout <<"myAge: " < 12: pAge = &myAge; // заносимо в pAge адрзс myAge 13: cout <<"*pAge: " <<*pAge <<"\n\n"; 14: cout <<"*pAge = 7\n"; 15: * pAge = 7; // присвоюємо myAge значення 7 16: cout <<"*pAge: " <<*pAge <<"\n"; 17: cout <<"myAge: " < 18: cout <<"myAge = 9\n"; 20: cout <<"myAge: " < 21: cout <<"*pAge: " <<*pAge <<"\n"; Аналіз: У програмі оголошені дві змінні: myAge типу unsigned short і pAge, що є покажчиком на цей тип. У рядку 10 змінної pAge присвоюється значення 5, а в рядку 11 це значення виводиться на екран. У рядку 19 значення myAge знову змінюється. Тепер цієї змінної присвоюється число 9. Потім в рядках 20 і 21 ми звертаємося до цього значення безпосередньо (через змінну) і шляхом разименованія покажчика на неї. Лістинг 8.3. Що ж записано в покажчику? 1: // Лістинг 8.3. Що ж зберігається в покажчику? 3: #include 8: unsigned short int myAge = 5, yourAge = 10; 9: unsigned short int * pAge = &myAge; // Покажчик 10: cout <<"myAge:\t" < 11: cout <<"&myAge:\t" <<&myAge <<"\t&yourAge;\t" <<&yourAge <<"\n"; 12: cout <<"pAge;\t" < 13: cout <<"*pAge:\t" <<*pAge <<"\n"; 14: pAge = &yourAge; // переприсвоєному покажчика 15: cout <<"myAge:\t" < 16: cout <<"&myAge:\t" <<&myAge <<"\t&yourAge:\t" <<&yourAge <<"\n"; 17: cout <<"pAge:\t" < 18: cout <<"*pAge:\t" <<*pAge <<"\n"; 19: cout <<"&pAge:\t" <<&pAge <<"\n"; myAge: 5 yourAge: 10 myAge: 0x355C yourAge: 0x355E myAge: 5 yourAge: 10 myAge: 0x355C yourAge: 0x355E (Ваші результати можуть відрізнятися від наведених.) Щоб оголосити покажчик, запишіть спочатку тип змінної або об'єкта, на який буде посилатися цей покажчик, потім помістіть символ зірочки (*), а за ним - ім'я нового покажчика, наприклад: unsigned short int * pPointer = 0; unsigned short int theVariable = 5; unsigned short int * pPointer = theVariable; Щоб разименовать покажчик, встановіть перед його ім'ям оператор разименовиванія (*): unsigned short int theValue = * pPointer Для чого потрібні покажчики • для розміщення даних в вільних областях пам'яті і доступу до них; • для доступу до змінних і функцій класів; • для передачі параметрів в функції по посиланню. Частина, що залишилася глави присвячена динамічному управління даними і операціями зі змінними і функціями класів.Схожі статті