Діаграма порівняння
Основа для порівняння | Покажчик | Довідка |
---|---|---|
Основний | Покажчик є адресою пам'яті змінної. | Посилання є псевдонімом для змінної. |
Повернення | Змінна покажчика повертає значення, розташоване за адресою, що зберігається в змінній покажчика, якій передує знак '*'. | Посилальна змінна повертає адресу змінної, що передує позначці '&'. |
Оператори | *, -> | & |
Null Reference | Покажчик змінна може посилатися на NULL. | Посилальна змінна ніколи не може посилатися на NULL. |
Ініціалізація | Можна створити неініціалізований покажчик. | Неініціалізовану посилання ніколи не можна створити. |
Час ініціалізації | Покажчик змінна може бути ініціалізована в будь-який момент часу в програмі. | Довідкову змінну можна ініціалізувати тільки під час її створення. |
Реініціалізація | Змінна покажчика можна повторно ініціалізувати стільки разів, скільки потрібно. | Довідкова змінна ніколи не може бути повторно ініціалізована в програмі. |
Визначення покажчика
"Покажчик" - це змінна, яка містить місце пам'яті іншої змінної. Оператори, що використовуються змінною покажчика, є * і ->. Декларація змінної покажчика містить базовий тип даних, за яким йде знак '*' і ім'я змінної.
введіть * var_name;
Давайте зрозуміємо покажчик за допомогою прикладу.
int a = 4; int * ptr = & a; cout <Тут ми маємо цілочисельну змінну a та змінну вказівника ptr, яка зберігає адресу змінної a.
Арифметика покажчика
Покажчик змінна може працювати з двома арифметичними операторами, які є "додавання" і "віднімання". Додавання називається "приростом", а віднімання називається "декрементом". Як змінна покажчика збільшується, вона вказує на розташування пам'яті наступної змінної свого базового типу. Коли покажчик змінюється, він вказує на місце розташування попередньої змінної свого базового типу. Таким чином, до масиву можна ефективно звертатися за допомогою змінної покажчика.
Кілька напрямків
Покажчик вказує на іншу змінну покажчика, яка вказує на цільове значення. Цей тип покажчика завжди ініціалізується за адресою іншої змінної покажчика. Декларація покажчика на покажчик є наступною.
type ** var_name;Давайте вивчимо його з прикладом.
int a = 4; int * ptr1 = & a; int ** ptr2 = & ptr1; cout <Покажчик функції
Як ми знаємо, що функція не є змінною, вона все-таки має місце пам'яті, яке може бути призначено змінної покажчика. Після того, як покажчик вказує на функцію, функцію можна викликати з покажчиком функції.
Важливі моменти, які слід пам'ятати про покажчик.
- Покажчик змінної може бути створений без його ініціалізації, і він може бути ініціалізований в будь-якому місці програми.
- Змінна покажчика може бути повторно ініціалізована до іншої змінної.
- Покажчик змінна може посилатися на NULL.
Визначення посилань
Посилальна змінна використовується, щоб посилатися на змінну, яка присвоєна цій опорній змінної. Оператором, який використовується еталонною змінною, є '&'. Декларація опорної змінної містить базовий тип, за яким йде знак '&', а потім ім'я змінної.
введіть & refer_var_name = var_ name;Тут тип є тип даних, оператор & підтверджує, що він є еталонною змінною. Ім'я еталонної змінної - ім'я еталонної змінної. Var_name - це назва змінної, яку ми хочемо посилатися на змінну посилання.
Давайте зрозуміти змінні посилання за допомогою прикладу.
int a = 4; int & b = a; // b відноситься до ab = 6; // зараз a = 6Тут змінній типу int присвоюється значення 4. Довідкову змінну присвоюється змінна a, тобто b - псевдонім a. Тепер, коли ми призначаємо інше значення b, ми змінюємо значення a. Отже, можна сказати, що зміни, внесені до опорної змінної, також відбуватимуться в змінної, що посилається на цю опорну змінну.
Найважливішим моментом є те, що еталонна змінна повинна бути ініціалізована під час її створення. Після того, як еталонна змінна ініціалізується змінною, вона не може бути повторно ініціалізована для передачі іншої змінної. У момент, коли ви привласните значення опорній змінної, ви привласните це значення змінної, на яку вказує посилання змінні. Посилальна змінна ніколи не може посилатися на NULL. Арифметика не може бути виконана на еталонної змінної.
Довідкову змінну можна використовувати трьома способами:
- Як функція повертає значення.
- Як параметр функції.
- Як окрема довідка.
Основні відмінності між покажчиком і посиланням
- Посилання на те, як створити іншу назву, щоб посилатися на змінну, щоб її можна було посилатися на різні імена. З іншого боку, покажчик є просто адресою пам'яті змінної.
- Змінна покажчика, якщо вона передує "*", повертає значення змінної, адреса якої зберігається у покажчику varaible. Посилальна змінна, за якою передує "&", повертає адресу цієї змінної.
- Оператори-покажчики є * і ->, тоді як оператор посилання є &.
- Покажчик-змінна, якщо не містить адреси будь-якої змінної, вказує на нуль. З іншого боку, довідкова змінна ніколи не може посилатися на Null.
- Ви завжди можете створити неініціалізовану змінну покажчика, але ми створюємо посилання, коли нам потрібен псевдонім для якоїсь змінної, щоб ви ніколи не могли створити повторний впорядкування.
- Ви можете повторно ініціалізувати покажчик, але після ініціалізації ви не можете повторно ініціалізувати його.
- Ви можете створити порожній покажчик і ініціалізувати його в будь-який час, але ви повинні ініціалізувати refrence тільки при створенні refernce.
Примітка:
Java не підтримує покажчики.
Висновок
Як покажчик, так і посилання використовуються для вказування або передачі іншої змінної. Але обидва вони відрізняються за своїм використанням і реалізацією.