我想知道是否可以使用
捕获我可以显示的变量地址fprintf(stdout, "%p\n", (void*) &var);
并实际将其放入另一个变量中,而不显示它。
(进入一个String变量,而不是它的实际地址)
我用setbuf测试了这个,但它仍然显示了我不想要的字符串。
我试过到处寻找,但我看到的只是使用setbuf或其他一些不符合我要求的方法。
答案 0 :(得分:4)
您可以使用捕获字符串中任何输出的相同方式捕获地址的字符串表示形式 - 使用sprintf
函数:
char buf[17];
sprintf(buf, "%p", (void*) &var);
此时buf
包含一个以空字符结尾的字符串,其中表示var
的地址适合打印。
当然,如果您希望将字符串保持在buf
的范围之外,则需要动态分配另一个字符串,并将strcpy
buf
加入其中。
答案 1 :(得分:2)
您可以使用以下内容:
void* pointerToVar = &var;
fprintf(stdout, "%p\n", pointerToVar);
答案 2 :(得分:0)
我尝试了第一篇文章,它也有效。
我们也试过这个的修改版本,它也是这样的。
char a = 5; //随机数,字面上没有重要性
unsigned long long int b = (unsigned long long int) &a;
int num = abs(b);