Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Посилання та Розіменування | Вказівники
Основи C

Свайпніть щоб показати меню

book
Посилання та Розіменування

Вказівники побудовані навколо двох операторів:

  • Оператор взяття адреси &.

  • Оператор розіменування *.

Оператор взяття адреси

Оператор взяття адреси, представлений символом &, дозволяє нам безпосередньо взаємодіяти з оперативною пам'яттю комп'ютера. Використання & дозволяє отримати фактичну адресу в пам'яті об'єкта.

c

Main

copy
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.

c

Main

copy
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).
  • Спробуйте дереференціювати адресу, отриману на попередньому кроці.

Рішення

Switch to desktopПерейдіть на комп'ютер для реальної практикиПродовжуйте з того місця, де ви зупинились, використовуючи один з наведених нижче варіантів
Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 6. Розділ 2
Ми дуже хвилюємося, що щось пішло не так. Що трапилося?

Запитати АІ

expand
ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

book
Посилання та Розіменування

Вказівники побудовані навколо двох операторів:

  • Оператор взяття адреси &.

  • Оператор розіменування *.

Оператор взяття адреси

Оператор взяття адреси, представлений символом &, дозволяє нам безпосередньо взаємодіяти з оперативною пам'яттю комп'ютера. Використання & дозволяє отримати фактичну адресу в пам'яті об'єкта.

c

Main

copy
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.

c

Main

copy
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).
  • Спробуйте дереференціювати адресу, отриману на попередньому кроці.

Рішення

Switch to desktopПерейдіть на комп'ютер для реальної практикиПродовжуйте з того місця, де ви зупинились, використовуючи один з наведених нижче варіантів
Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 6. Розділ 2
Switch to desktopПерейдіть на комп'ютер для реальної практикиПродовжуйте з того місця, де ви зупинились, використовуючи один з наведених нижче варіантів
Ми дуже хвилюємося, що щось пішло не так. Що трапилося?
some-alt