gpt4 book ai didi

c - 指向地址 C 的字符串

转载 作者:行者123 更新时间:2023-11-30 20:52:16 24 4
gpt4 key购买 nike

我想要完成的事情的本质如下。我想将字符串形式的整数(整数指针)地址传递给需要整数指针作为参数的函数。就简单代码而言,我想做以下事情:

void dsp(int *);

int main() {

char *b;
int a=2;p=&a;
b = (char *)malloc(100*sizeof(char));
sprintf(b, "%p",p);
puts( b );
dsp(&a);
dsp((int *)strtol(b,16));
free(b);
return 0;
}

void dsp(int *addr)
{
printf("val:%d\n",*addr);
}

这就是我的输出:

0x7fbffffa6c   (from puts(b))
val:2
Segmentation fault

有人可以建议上面有什么问题和/或如何解决吗?任何帮助,将不胜感激。谢谢。

最佳答案

使用 strtol 作为指针并不是一个非常可移植的想法,因为 a long is not required fit a pointer 。执行您要查找的操作的最简单方法可能是将其替换为 sscanf ,它具有您可以使用的实际指针格式;

dsp(&a);
int* recovered_pointer;
sscanf(b, "%p", &recovered_pointer);
dsp(recovered_pointer);

顺便说一句,您没有将所有 3 个必需参数传递给 strtol,即使 long “足够长”以适合指针,这也不起作用。包含所需的头文件总是一个好主意,因为在这种情况下它们将帮助编译器在编译时告诉您代码将被破坏。

关于c - 指向地址 C 的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15081863/

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