Например, чтобы вывести адрес переменной x на экран, можно использовать следующий код:
int x;
printf("Адрес переменной x: %p", &x);
В данном коде спецификатор формата «%p» указывается после строки, которая содержит текст «Адрес переменной x: «. Далее ставится запятая и передается адрес переменной x с помощью оператора взятия адреса «&».
Таким образом, при выполнении данного кода на экран будет выведено сообщение «Адрес переменной x: 0xячисло», где 0x — префикс для обозначения шестнадцатеричного числа, а «ячисло» — адрес переменной x.
Пример использования преобразования %p:
#include <stdio.h>
int main() {
int num = 42;
int *p = #
printf("Адрес переменной num: %p
", p);
return 0;
}
Результат выполнения программы будет следующим:
Адрес переменной num: 0x7ffeeb4969b8
Здесь значение адреса может отличаться на разных компьютерах и в разных запусках программы.
Таким образом, путем использования специального преобразования типа %p и указания нужного типа указателя мы можем успешно вывести адрес памяти в Си с помощью функции printf.
О функции printf
Функция printf принимает в качестве аргументов форматную строку и список значений, которые будут подставлены в эту строку.
Форматная строка определяет, какие данные и в каком формате должны быть выведены. Она может содержать специальные символы, называемые спецификаторами формата, которые указывают на тип данных, который нужно вывести и спецификацию формата для этого типа данных.
Например, если нужно вывести целое число, можно использовать спецификатор формата %d. Если нужно вывести строку, можно использовать спецификатор формата %s.
Пример использования функции printf:
#include <stdio.h>
int main() {
int n = 42;
int *p = &n;
printf("Значение переменной n: %d
", n);
printf("Адрес переменной n: %p
", p);
return 0;
}
Этот код выведет:
Значение переменной n: 42
Адрес переменной n: 0x7ffeea574a84 (значение адреса будет отличаться)
Спецификатор формата | Описание | Пример |
---|---|---|
%p | int* ptr = &x; | |
%#x | int* ptr = &x; |