将void *类型传递给main()函数

时间:2015-06-17 10:56:05

标签: c main void-pointers argv

我的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"

运行

2 个答案:

答案 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所说,进程无法访问任何内存值。