C 在不考虑类型的情况下获取指针的 TRUE(整数形式)地址



我知道我可以使用以下方法打印地址:

printf("%pn",(void*)&a);

有没有办法只访问变量的地址(=int 表示内存中的位置(?

一种可能的解决方法是 sprintf %p 的 atoi 但很常见,有没有更清洁的方法?

我需要一个玉米片项目。
我正在尝试做的是将我在内核中创建的对象的地址写入返回寄存器。

你可以将void *强制转换为 uintptr_t ,这是一个足够大的整数类型,可以表示指针。

uintptr_t p = (uintptr_t)(void *)&a;

请注意,需要双重转换,因为标准规定转换仅在uintptr_tvoid *之间有效。

指针始终可以转换为整数类型。甚至有一种类型可以保证能够保存任何(void *(指针值,因此将其转换回实际指针会产生原始指针:uintptr_t。如果出于某种原因需要有符号的指针值,也可以intptr_t为有符号类型。

但是:我认为你真的不需要那个。阅读你的最后一句话给我的印象是你只需要传递指针值,所以也许你应该更好地解释你的实际问题。

最新更新