Перед безпосереднім виконанням операційна система (ОС) завантажує програму у оперативну пам'ять. Пам'ять для програми (під час її виконання) виглядає як велетенський масив комірок, кожна з яких має адресу та може зберігати 1 байт інформації.
- Адреса - це просто число, порядковий номер комірки в пам'яті.
- Найменьша кількість інформації яка може бути зчитана чи записана за раз - 1 байт.
Змінні, які ми оголошуємо у програмі містять дані, а отже ці дані мають адресу у пам'яті. Для того, щоб дізнатися адресу користуються оператором `&`. У наступному прикладі ми оголошуємо кілька змінних, виводимо їх значення, а потім - адресу у пам'яті.
int number = 42;
std::cout << " number value: " << number << std::endl
<< " number address: " << &number << std::endl
<< std::endl;
std::string message = "Hello, World!";
std::cout << " message value: " << message << std::endl
<< " message address: " << &message << std::endl
<< std::endl;
Якщо ми запустимо цей код, то отримаємо вивід:
number value: 42
number address: 00000000001EF8A0
message value: Hello, World!
message address: 00000000001EF8B0
Значення адреси 00000000001EF8B0
виглядає дуже незвично. Це тому, що це шістнадцяткове число. Детальніше про шістнадцяткову систему числення можна прочитати тут. Але загалом, для того, щоб почати працювати з памяттю в С++ знати це не обов'язково. Просто звикніть, що існує такий спосіб представлення чисел.
**Не плутайте отримання адреси з оголошенням посилання! Коли ми застосовуємо оператор '&' до окремої змінної - це операція отримання адреси! **
Наприклад:
int number = 42;
// Оголошуємо посилання на int!
int &refNumber = number;
// Беремо адресу number та виводимо у консоль!
std::cout << &number << std::endl;