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

Зміст курсу

Основи C

Основи C

1. Вступ
2. Дані
3. Оператори
4. Оператори управління
5. Функції
6. Вказівники

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

Завдання
test

Swipe to show code editor

  • Створіть масив цілих чисел з 5 елементів і заповніть його.
  • Отримайте адресу третього елемента.
  • Збільшіть адресу третього елемента (тобто адреса + 1).
  • Спробуйте дереференціювати адресу, отриману на попередньому кроці.
Switch to desktopПерейдіть на комп'ютер для реальної практикиПродовжуйте з того місця, де ви зупинились, використовуючи один з наведених нижче варіантів
Все було зрозуміло?

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

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

Секція 6. Розділ 2
toggle bottom row

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

Завдання
test

Swipe to show code editor

  • Створіть масив цілих чисел з 5 елементів і заповніть його.
  • Отримайте адресу третього елемента.
  • Збільшіть адресу третього елемента (тобто адреса + 1).
  • Спробуйте дереференціювати адресу, отриману на попередньому кроці.
Switch to desktopПерейдіть на комп'ютер для реальної практикиПродовжуйте з того місця, де ви зупинились, використовуючи один з наведених нижче варіантів
Все було зрозуміло?

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

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

Секція 6. Розділ 2
Switch to desktopПерейдіть на комп'ютер для реальної практикиПродовжуйте з того місця, де ви зупинились, використовуючи один з наведених нижче варіантів
We're sorry to hear that something went wrong. What happened?
some-alt