Menu
Coddy logo textTech

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

Часть раздела Logic & Flow путешествия по 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]

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

Шпаргалка

Оператор взятия адреса (&) возвращает адрес переменной в памяти:

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

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

Используйте спецификатор формата %p для вывода адресов указателей с помощью printf.

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

#include <stdio.h>

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

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

Все уроки раздела Logic & Flow