Menu
CoddyTech

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

Часть раздела Логика и управление потоком путешествия по C на Coddy. Урок 3 из 63.

Теперь, когда вы умеете объявлять указатели, вам нужно научиться фактически сохранять в них адрес памяти. Оператор взятия адреса (&) — это ключ к получению адреса памяти любой переменной.

Когда вы помещаете оператор & перед именем переменной, он возвращает адрес памяти, по которому хранится эта переменная. Представьте, что вы спрашиваете: «Где эта переменная находится в памяти?»

int age = 25;
int *ptr;
ptr = &age;    // Сохранить адрес 'age' в 'ptr'

В этом примере &age предоставляет нам адрес памяти переменной age. Затем мы присваиваем этот адрес нашему указателю ptr. Теперь ptr «указывает на» переменную age.

Оператор взятия адреса необходим, потому что он служит связующим звеном между обычными переменными и указателями. Без него вы не смогли бы указать указателю, на какую переменную ссылаться. Помните, что типы данных должны совпадать: указателю, объявленному для целых чисел, можно присвоить только адрес целого числа.

challenge icon

Задание

Легко

Напишите программу на C, демонстрирующую использование оператора взятия адреса для связывания переменных с указателями. Ваша программа должна:

  1. Объявить целочисленную переменную с именем number и инициализировать её значением 42
  2. Объявить символьную переменную с именем letter и инициализировать её значением 'X'
  3. Объявить указатель на целое число с именем num_ptr
  4. Объявить указатель на символ с именем char_ptr
  5. Использовать оператор взятия адреса, чтобы присвоить адрес number переменной num_ptr
  6. Использовать оператор взятия адреса, чтобы присвоить адрес letter переменной char_ptr
  7. Вывести адреса, хранящиеся в обоих указателях, используя printf со спецификатором формата %p

Ваш вывод должен отображать адреса указателей в следующем формате:

Address of number: [address]
Address of letter: [address]

Фактические адреса памяти будут различаться при каждом запуске программы, но формат и метки должны в точности соответствовать приведённым выше. [address] — это заполнитель для выведенного адреса: не выводите квадратные скобки.

Попробуйте сами

#include <stdio.h>

int main() {
    // TODO: Напишите ваш код здесь
    // 1. Объявите и инициализируйте переменные
    // 2. Объявите указатели
    // 3. Используйте оператор взятия адреса для присвоения адресов
    // 4. Выведите адреса, используя указанный формат
    
    return 0;
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком

Потренируйтесь самостоятельно: Онлайн-компилятор C