C Покажчики
Створення покажчиків
З попереднього розділу ви дізналися, що ми можемо отримати адресу пам’яті змінної за допомогою оператора посилання &
:
Приклад
int myAge = 43; // int змінна
printf("%d", myAge); // Виводить значення myAge (43)
printf("%p", &myAge); // Виводить адресу пам’яті myAge (0x7ffe5367e044)
Спробуйте самі »
Покажчик- це змінна, яка зберігає адресу пам’яті іншої змінної як своє значення.
Змінна покажчика вказує на тип даних (наприклад, int
) того самого типу і створюється за допомогою оператора *
.
Адреса змінної, з якою ви працюєте, призначається вказівнику:
Приклад
int myAge = 43; // Змінна int
int* ptr = &myAge; // Змінна-покажчик з іменем ptr, яка зберігає адресу myAge
// Виведіть значення myAge (43)
printf("%d\n", myAge);
// Виведіть адресу пам’яті myAge (0x7ffe5367e044)
printf("%p\n", &myAge);
// Виведіть адресу пам’яті myAge за допомогою покажчика (0x7ffe5367e044)
printf("%p\n", ptr);
Спробуйте самі »
Пояснення прикладу
Створіть змінну-покажчик із назвою ptr
, яка вказує на змінну int
(myAge
). Зауважте, що тип покажчика має відповідати типу змінної, з якою ви працюєте (int
у нашому прикладі).
Використовуйте оператор &
, щоб зберегти адресу пам’яті змінної myAge
і призначити її покажчику.
Тепер ptr
містить значення адреси пам’яті myAge
.
Розіменування
У наведеному вище прикладі ми використали змінну-покажчик, щоб отримати адресу пам’яті змінної (використовується разом з оператором посилання &
).
Ви також можете отримати значення змінної, на яку вказує покажчик, використовуючи оператор *
(оператор розіменування):
Приклад
int myAge = 43; // Оголошення змінної
int* ptr = &myAge; // Оголошення покажчика
// Довідка: Виведіть адресу пам’яті myAge за допомогою покажчика (0x7ffe5367e044)
printf("%p\n", ptr);
// Розіменування: Виведіть значення myAge за допомогою покажчика (43)
printf("%d\n", *ptr);
Спробуйте самі »
Зауважте, що знак *
може ввести в оману, оскільки він виконує дві різні дії в нашому коді:
- При використанні в оголошенні (
int* ptr
) створюється змінна-вказівник. - Якщо не використовується в оголошенні, він діє як оператор розіменування.
Корисно знати: Є два способи оголосити змінні покажчика в C:
int* myNum;
int *myNum;
Примітки щодо покажчиків
Покажчики — це одна з речей, завдяки яким C виділяється серед інших мов програмування, таких як Python та Java.
Вони важливі в мові C, оскільки дозволяють нам маніпулювати даними в пам’яті комп’ютера. Це може зменшити код і підвищити продуктивність. Якщо ви знайомі зі структурами даних, такими як списки, дерева та графіки, ви повинні знати, що покажчики особливо корисні для їх реалізації. А іноді навіть доводиться використовувати покажчики, наприклад, під час роботи з файлами.
Але будьте обережні; з покажчиками слід поводитися обережно, оскільки можна пошкодити дані, що зберігаються в інших адресах пам’яті.