Получить шестнадцатеричный адрес переменной как uintptr_t - PullRequest
0 голосов
/ 23 мая 2018
int y = 1;
int *x = &y;  
printf("%p\n",x); // instead of printing, get this into variable of type unintptr_t

Я хотел бы получить адрес x в переменную типа uintptr_t

Есть ли способ сделать это в C?

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Вы можете сохранить значение, явно указав тип адреса x в uintptr_t.

uintptr_t z = (uintptr_t)&x;

0 голосов
/ 23 мая 2018

Это не особенно сложно ...

uintptr_t z = (uintptr_t)x;

Обратите внимание, что результат этого приведения зависит от реализации;единственная гарантия, что у вас есть это то, что если вы приведете z обратно к int *, вы получите исходный указатель обратно.

Кстати, не существует такого понятия, как «шестнадцатеричный адрес»;адреса - это адреса, их можно рассматривать как числа в любой базе, которая вам больше нравится, показывать их в шестнадцатеричном формате - это просто соглашение (которое имеет некоторые преимущества).

...