0

我偶然发现了这里这里的文章,说它是一种很好的编程习惯,永远不会返回 NULL。但是对于需要返回一些东西的函数,它应该返回什么?的值-1不会削减它,因为假设我们有函数:

char *return_some_string(int input) {
    /* do something */

    if (error) 
        return some_thing_not_null; 
}

你如何解决这个问题?

4

3 回答 3

10

我偶然发现了一些文章,说它的良好编程实践永远不会返回 NULL。

无条件地表明该文章的质量。烧掉它吧。

但是对于需要返回一些东西的函数,它应该返回什么?

NULL. 从概念上讲,这就是“无效指针”、“指向任何内容的指针”等等。使用语言是有充分理由的。

于 2013-05-18T21:16:41.383 回答
3

在 C 中,返回 NULL 是完全正常的。

事实上, mallc,C 库有时会返回 NULL ......

你有一个指针,它是 NULL 很好。

于 2013-05-18T21:17:15.403 回答
0

如果你想变得异国情调,你可以做 MS 做的事情:

#define INVALID_POINTER_VALUE ((void*)-1l)

因此,您可以返回并对其进行测试。虽然NULL背后有充分的理由。注意后缀:值必须是long转换前的类型,或者任何其他与指针大小匹配的类型。

于 2013-05-18T23:48:42.787 回答