Підсумок. Всі об’єкти мають адреси в пам’яті комп’ютера
Всі об’єкти мають адреси в пам’яті комп’ютера. Адреси – це вказівники-константи. Адресу змінної можна одержати, використовуючи операцію видобування адреси &.
Вказівники – це змінні, значенням яких є адреса. Вказівник визначається з використанням зірочки *, яка означає вказівник на. В означення вказівника завжди включають тип даних, на який він вказує, оскільки компілятору необхідні відомості про те, на що буде вказувати вказівник і як правильно виконувати з ним арифметичні дії. Доступ до того, на що вказує вказівник, ми одержуємо, використовуючи зірочку, яка в цьому випадку є операцією розіменування, тобто одержання значення змінної, на яку вказує вказівник.
Спеціальний тип *void означає вказівник на будь-який тип даних. Він використовується в ситуаціях, коли один і той самий вказівник повинен зберігати адреси змінних різних типів.
Доступ до елементу масиву можна одержати, використовуючи операції масиву з квадратними дужками або вказівники. Адреса масиву є вказівником-константою, але її можна присвоїти змінній-вказівнику, яка може бути збільшена або змінена.
Функція при передачі їй адреси змінної може працювати з самою змінною (цього не відбувається, якщо змінна передається за значенням). В цьому відношенню передача аргументу за вказівником дає ту саму перевагу, що й передача за посиланням, хоча для доступу до аргументів вказівника необхідно використати операцію розіменування. Однак вказівники в деяких випадках надають гнучкіший механізм.
Рядкова константа може бути визначена як масив або з використанням вказівника, останній підхід є гнучкішим. Рядки, представлені масивом типу char, звичайно передаються в функції з використанням вказівника.
Операція new призначена для виділення потрібної кількості пам’яті в системі. Вона повертає вказівник на виділену ділянку пам’яті. Використовується для створення змінних і структур даних під час виконання програми. Операція delete вивільняє пам’ять, виділену з використанням операції new.
Якщо вказівник вказує на об’єкт, то доступ до членів об’єкту можна одержати, використовуючи операцію ->. Для доступу до членів структури використовується такий сам синтаксис.
В класах і структурах можуть міститися елементи, які є вказівниками на самі ці класи або структури. Це дозволяє створювати складні структури, такі як зв’язні списки.
Можуть існувати вказівники на вказівники. Такі змінні визначаються з використанням подвійної зірочки, наприклад, int** pptr.
Питання по темі
1. Вказівник – це:
а) адреса змінної
б) позначення змінної, яка буде доступна наступною
в) змінна для збереження адреси
г) тип даних для адресних змінних
2. Зірочка, розміщена після типу даних, означає_____. Зірочка, розміщена перед іменем змінної, означає_______
а) адресу; вказівник
б) вказівник на; значення змінної, на яку посилається вказівник
в) знак операції розіменування; знак операції одержання адреси
3. Вираз *test означає:
а) вказівник на змінну test
б) розіменування змінної test
в) посилання на значення змінної, на яку вказує test.
4. Вказівник на void може містити вказівник на
а) будь-який тип даних
б) тип void
в) всі числові типи даних
5. Які способи передачі аргументу дозволяють функції поміняти передані їй аргументи?
а) за значенням і за посиланням
б) за значенням і за вказівником
в) за посиланням і за вказівником
6. Операція new
а) повертає вказівник на змінну
б) створює змінну з іменем new
в) одержує пам’ять для нової змінної
г) дозволяє дізнатися, скільки пам’яті вільно на певний момент
7. Операція delete повертає операційній системі
а) значення змінної
б) пам’ять, зайняту змінною
в) адресу змінної
8. Нехай дано вказівник p, що вказує на об’єкт типу upperclass. Як правильно записати виклик методу exclu() цього об’єкта?
а)p->exclu()
б)p.exclu()
в)upperclass.exclu()
9. Нехай дано об’єкт, що є елементом масиву objarr з номером 7. Як правильно викликати метод exclu() цього об’єкта?
а)objarr[7]->exclu()
б)objarr.exclu()[7]
в)objarr[7].exclu()
10. Як правильно визначити масив arr з 8 вказівників, які вказують на змінні типу float?
а) float arr[8]
б) float* arr[8]
в) float& arr[8]
Дата добавления: 2015-08-26; просмотров: 634;