繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM