我只想使用十六进制地址获取值:
#include<stdio.h>
int main()
{
int *hold, value=10;
hold = &value;
printf("%p",hold);
}
它为我提供了地址0x7fffd7c24334
。我只是想知道,如果在C或C ++中有一种方法,那么我可以直接得到&#34; value&#34;暂时使用十六进制数0x7fffd7c24334
。我想变量hold
的地址有时是相同的,因此0x7fffd7c24334
仍然指向value
,但我不确定。
答案 0 :(得分:4)
假设每次执行程序时此地址都是一致的,您可以使用:
int value2 = *(int*)0x7fffd7c24334;
但请注意,这种假设通常是错误的!
函数中局部变量的地址取决于调用函数时执行点的堆栈状态(SP寄存器的值)。
它可能在main
中起作用,因为此函数只被调用一次,并且SP寄存器在每次执行程序时都应具有相同的值。但即使它确实有效,只要在value
之前添加变量,该地址就会发生变化。用简单的话来说,不要使用这种方法。
答案 1 :(得分:0)
答案 2 :(得分:0)
我认为您可以使用此
printf("%x", hold);