gpt4 book ai didi

c - 如何创建一个指向其地址存储在 char 数组中的变量的指针?

转载 作者:行者123 更新时间:2023-11-30 14:55:09 26 4
gpt4 key购买 nike

我有一个程序,其中我将变量“var”的地址存储在字符数组中:

int var = 10; //defined in somefile
sprintf(varAddress,"%p",&var)

现在varAddress存储var的地址(例如 "0x7fff22b823dc" )。

有什么办法可以使用 varAddress创建指向变量 var 的指针?

最佳答案

假设字符串的格式与%p格式转换支持的实现定义格式匹配,则可以按如下方式解析指针:

int var = 10;
// Writing the address into a string
char buf[100];
sprintf(buf, "%p", (void*)&var);
printf("Address string: %s\n", buf);
// Reading the address back
void *ptr;
sscanf(buf, "%p", &ptr);
int *vptr = ptr;
printf("Got address back: %p\n", (void*)vptr);

Demo.

请注意,除非指针的值来自此正在运行的进程本身,否则任何取消引用此指针的尝试都将是未定义的行为。此外,从字符串中检索其指针的对象必须仍然存在,并且指针的类型必须与对象的类型匹配。所有这些限制使得很难想象从字符串中读取指针可以达到任何实际目的的用例。

关于c - 如何创建一个指向其地址存储在 char 数组中的变量的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46175075/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com