[英]Initialize pointer to pointer on the stack
我是C新手,我正在尝试做正确的指针/内存操作...
就我而言,我使用的是strtol,我需要传递一个** char来保存几个返回值之一,但是分配堆空间实在是太过分了。 我可以找到的最干净正确的方法(我希望)是在堆栈上腾出空间:
char *_ = NULL;
char **endptr = &_;
ret = strtol("not a number", endptr, 0);
我很好奇,是否有更简洁或惯用的方式来获得这种效果? 命名我永远不会使用的东西时,我感到很脏。
编辑:澄清一下,我确实打算使用endptr,而不是_
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);
如果不需要endptr,则可以将null指针传递给strtol。 否则,我不必担心命名您将不会使用的变量。 尽管我不认为我会像您一样命名_
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.