Посилання та Розпосилання
Вказівники побудовані навколо двох операторів:
Оператор взяття адреси
&
.Оператор розіменування
*
.
Оператор взяття адреси
Оператор взяття адреси, представлений символом &
, дозволяє нам безпосередньо взаємодіяти з оперативною пам'яттю комп'ютера. Використання &
дозволяє отримати фактичну адресу пам'яті об'єкта.
Main.c
123456789101112#include <stdio.h> int main() { int x = 100; printf("Value of variable: %d\n", x); printf("Address of variable into RAM: %p\n", &x); // using reference operator `&` for getting address return 0; }
Примітка
%p
- це специфікатор формату, що використовується для адрес (вказівник).
Адреси зазвичай виражаються у шістнадцятковій нотації.
Думайте про оператор &
як про визначення адреси вашого дому за вашим ім'ям.
Оператор Дереференції
Навпаки, оператор *
дає вам ім'я мешканця, коли вам відома його адреса. Отже, як ми можемо використовувати цей оператор, якщо ми не працюємо безпосередньо з адресами? Якщо у вас є вираз на кшталт &x
, який повертає адресу змінної x
, застосування до нього оператора *
(*&x
) дає вам значення змінної, що зберігається за цією адресою.
Примітка
По суті,
*&x
те саме, що іx
.
Main.c
1234567891011121314#include <stdio.h> int main() { int x = 100; printf("Value of variable: %d\n", x); printf("Address of variable in RAM: %p\n", &x); // using reference operator `&` printf("Dereferencing address of variable: %d", *(&x)); // using dereference operator `*` return 0; }
Примітка
Не плутайте оператор дереференції (
*x
) з оператором множення (x*y
).
Swipe to start coding
- Створіть масив цілих чисел з 5 елементів і заповніть його.
- Отримайте адресу третього елемента.
- Збільшіть адресу третього елемента (тобто адреса + 1).
- Спробуйте дереференціювати адресу, отриману на попередньому кроці.
Рішення
Дякуємо за ваш відгук!
single
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат