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. Просунуті Теми

book
Розуміння Вказівників

Що таке вказівник

Ви можете уявити вказівники як координати. Вони вказують нам на конкретні місця в пам'яті та дозволяють отримати доступ до даних, що зберігаються в цих місцях.

Коли ви оголошуєте вказівник, ви створюєте змінну, яка містить адресу пам'яті іншої змінної. Ви можете створити вказівник, використовуючи оператори * та &.

h

pointer

copy
1234
int value = 42; // `p_value` now holds the memory address of `value` int* p_value = &value;

Нульові вказівники

Ви можете використовувати спеціальні ключові слова, щоб представити нульовий вказівник null або nullptr. Нульовий вказівник не вказує на жодну дійсну адресу пам'яті. Це, по суті, вказівник без цілі.

Ви також можете ініціалізувати цілочисельний вказівник значенням null (або nullptr). Ми робимо це, коли не хочемо відразу асоціювати вказівник з конкретним значенням.

h

null_pointer

copy
123
int* p_int = null; // `p_int` is initialized to be null double* p_double = nullptr; // `p_double` is initialized to be null

Перепризначення вказівників

Вказівники можуть бути перепризначені для вказівки на різні адреси пам'яті. Однак перепризначення вказівника без належного управління може призвести до таких проблем, як витоки пам'яті або висячі вказівники.

h

reassigning_pointers

copy
12345
int x = 42; // Create an integer variable and assign a value to it int y = 43; // Create another integer variable int* p_int = &x; // Make the `p_int` variable point to the address of the integer variable `x` p_int = &y; // Reassign the `p_int` variable to `y`

Арифметика вказівників

Арифметика вказівників - це захоплюючий аспект вказівників. Вона дозволяє вам переміщатися по пам'яті, збільшуючи або зменшуючи адресу, яку зберігає вказівник.

Наприклад, розгляньте наступний код, де ми створюємо масив цілих чисел, а потім визначаємо вказівник для зберігання адреси масиву. Оскільки масив містить кілька елементів, вказівник за замовчуванням зберігає адресу першого елемента, який у цьому випадку є цілим числом 1.

h

pointer_arithmetic

copy
1234567891011
// Defining an array of integers int arr[5] = {1, 2, 3, 4, 5}; // The pointer holds the memory address of the first element in the array int* p_int = arr; // Incrementing the pointer makes the pointer point to the second value p_int = p_int + 1; // Dereference the pointer to get the actual second value int second_element = *p_int; // Equals to `2`

Щоб отримати доступ до другого елемента, збільшіть вказівник на 1, а потім розіменуйте його за допомогою оператора (*). Розіменування повертає значення, збережене за адресою пам'яті, яку зберігає вказівник (у цьому випадку ціле число 2). Слідуйте коментарям у коді, щоб зрозуміти кожен крок!

question mark

Що зберігає вказівник?

Select the correct answer

Все було зрозуміло?

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

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

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