【发布时间】:2016-11-09 04:58:13
【问题描述】:
我是一个 C 新手,我正在尝试正确地做指针/内存的事情......
在我的例子中,我使用的是 strtol,我需要传递一个 **char 来保存多个返回值之一,但是分配堆空间是多余的。我能找到的最干净正确(我希望)的方法是:
char *_ = NULL;
char **endptr = &_;
ret = strtol("not a number", endptr, 0);
我很好奇,有没有更简洁或惯用的方法来获得这种效果?我觉得命名我永远不会使用的东西很脏......
编辑: 澄清一下,我确实打算使用 endptr,而不是 _
【问题讨论】:
-
_是许多人认为变量名称的可疑选择。 -
很公平。在许多函数式语言中,这是对您不会使用的值进行模式匹配的传统方式。这类事情有 C 约定吗?
-
char *endptr;strtol(str, &endptr, 0);。换句话说,将endptr声明为一个指针,然后将该指针的地址传递给strtol。 -
编辑没有意义。
endptr除了指向_之外,对其他任何事情都没有好处。但是您可以直接访问_。如果你不使用_,你可以像其他人指出的那样传递NULL。 -
好的。我猜是挑剔的。我打算使用 endptr 和 _,但我不需要同时为它们两个变量。