【发布时间】:2013-02-26 05:16:12
【问题描述】:
我要完成的工作的本质如下。我想将一个整数地址(整数指针)以字符串的形式传递给一个期望整数指针作为参数的函数。在简单的代码方面,我想做以下事情:
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
任何人都可以建议上面有什么问题和/或如何解决吗?任何帮助,将不胜感激。 谢谢。
【问题讨论】:
-
对不起,
p和sprintf()是什么关系? -
有未声明的变量,你是怎么编译出来的?
-
strtol 不带 2 个参数且 sprintf 不安全,如果您希望我们提供帮助,请分享原始代码。
-
为什么是
strtol而不是strtoll? Iow,您确定您的指针适合long而不是long long?
标签: c string pointers memory-address