我的main()应该获得一个地址作为输入,需要存储在void*
地址中。
int main(int argc, char *argv[])
{
if (argc > 1) {
HandleStr = argv[1];
printf("\n Handle passed : %s\n",HandleStr);
}
}
我想将此HandleStr作为void *
类型。我怎么能这样做?
现在,我想将exec作为./testapp "0xaf6e9800"
答案 0 :(得分:4)
我怀疑你想要像
这样的东西HandleStr = (void *)strtol(argv[1], NULL, 16);
答案 1 :(得分:2)
如果你有C99编译器,你应该:
argv[1]
解码为intptr_t
void *
类似的东西:
int main(int argc, char *argv[])
{
if (argc > 1) {
long lh = strtol(argv[1], NULL, 16);
if (lh != 0) {
intptr_t ph = lh;
void *handle = ph;
printf("\n Handle passed : %p\n",handle);
}
}
}
但要注意:你应该知道该值是什么以及如何在程序中使用它。因为如Joachim Pileborg所说,进程无法访问任何内存值。