Исправление нескольких вещей в коде:
#include <stdio.h>
int main(void)
{
int *p, m = 100, x = 10;
p = &x; // In words, making 'p' to point to the address of 'x'
printf("Address %p contains a value %d..", (void *)p, *p);
// ^^ ^^^^^^^^^ ^
// Using the correct Typecasting Dereferencing
// format specifier the pointer the pointer
//
// Some code
return 0;
}
Генерируемый выход:
Address 0x7ffdf396c128 contains a value 10..
Вы должны получить другой результат, если попытаетесь использовать тот же код, поскольку адреса вряд ли будут одинаковыми.
Пояснение:
x
не был определен в предоставленном вами фрагменте
- Когда указатель используется для указания на совместимый тип данных, вы можете напечатать значение, разыменовав указатель.
- Если вы хотите напечатать значение самого указателя, вам нужно сначала привести его к
void
, а затем использовать спецификатор формата %p
вместо использования %d
.
- Список общего спецификатора формата в программировании на C