初始化指向堆栈上指针的指针

时间:2016-07-07 00:28:18

标签: c pointers memory stack

我是C新手,我正在努力做指针/记忆的事情......

在我的情况下,我正在使用strtol,我需要传递一个** char来保存几个返回值中的一个,但是分配堆空间是有点过分的。我能找到的最干净正确(我希望)的方法是,为此获得堆栈空间,是:

char *_ = NULL;
char **endptr = &_;
ret = strtol("not a number", endptr, 0);

我很好奇,是否有更简洁或惯用的方式来获得这种效果?我觉得很难命名我永远不会使用的东西...

编辑: 澄清一下,我打算使用endptr,而不是_

2 个答案:

答案 0 :(得分:3)

strtol接受NULL作为第二个参数。见http://www.cplusplus.com/reference/cstdlib/strtol/

所以你可以像这样写代码:

ret = strtol("not a number", NULL, 0);

如果它不接受NULL,你可以避免这样的一行代码:

char *unused;
ret = strtol("not a number", &unused, 0);

答案 1 :(得分:0)

如果您不需要endptr,则可以将空指针传递给strtol。否则,我不担心命名一个你不会使用的变量。虽然我不认为我会像你一样给它_命名。