Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Охарактеризуйте поняття вказівника і посилання. Їх основні відмінності.
Змінні, значеннями яких є адреси ділянок пам’яті, називаються вказівниками. Вказівник вказує на початок області оперативної пам'яті комп'ютера, де зберігається дане. Вказівники дають змогу оперувати не з іменами даних, а безпосередньо звертатись до областей пам'яті комп'ютера В С++ існує три види вказівників: 1)на об’єкти; 2)на функції; 3)на void. 1) Вказівник на об’єкти містить адреси ділянок пам’яті, де зберігаються значення певного типу. Формат запису наступний: < тип> *< ім’я вказівника> Наприклад int *a, *b; float *c, *d; Надати значення вказівникам можна так: < ім’я вказівника> = < адреса змінної> Приклад. Нехай у програмі оголошені змінні int n = 10; float stud1, stud2, stud3; Тоді можна визначити вказівники на ці змінні: nomer = & n; rist = & stud1; rist = & stud3; Вказівники застосовують, зокрема, для надання значень змінним: rist = & stud1; *rist = 1.85; Тут вказівник rist вказуватимемо на адресу змінної stud1, a власне змінній stud1 буде присвоєно значення 1.85. Вказівники можна переадресовувати. Зокрема, у прикладі вказівнику rist спочатку присвоєно адресу змінної stud1, а потім – адресу змінної stud3. Це правило не діє, якщо вказівник є сталою. Сталий вказівник, який вказує на одну і ту ж адресу, оголошують так: const int *rik; Для вказівників в залежності від ОС та версії компілятора резервується 2 або 4 байти в оперативній пам’яті. 2) Вказівник на функцію містить адресу в сегменті коду, за якою розташовується виконуваний код функції, тобто адресу, на яку передається керування в момент виклику функції. Вказівник на функцію використовують для опосередкованого виклику функції (не через її ім’я, а через вказівник, який містить її адресу), а також для передачі імені функції в іншу в якості параметра. Формат запису: < тип> (*< ім’я>) (список типів, аргументів) Наприклад int (*abc) (double, double); 3) Вказівнику на void можна присвоїти значення будь-якого вказівника і порівнювати його з довільним вказівником, але перед виконанням будь-яких дій з ділянкою пам’яті, на яку він посилається, потрібно зводити його до вказівника на конкретний тип явним чином. Особливо ефективною є робота з вказівниками на рядки та масиви. Посилання – це синонім імені, вказаного при ініціалізації посилання. Формат опису < тип> & < ім’я> Приклад. int k; int & h = k; Посилання – це розіменований вказівник. Тобто, h – альтернативне ім’я для k. Посилання, на відміну від вказівника, не займає додаткової пам’яті і є просто іншим іменем величини. Посилання обов’язково слід присвоювати при описі.
|