【发布时间】:2020-07-10 20:54:59
【问题描述】:
来自 C++,我们有 const 引用,我总是很难在 C 中解决这个问题。
如果我在 C 中有这样的东西:
struct Vector3 {
float x,y,z;
};
void test(struct Vector3 *va, struct Vector3 *vb) {
// Check for nullptr...
if (va == NULL || vb == NULL) {
// log / exit program
}
// bla bla...
}
在 C++ 中,我可以使用 const 引用来不允许 NULL 指针,但在 C 中则不允许。你什么时候在函数中检查 null?或者你用什么规则来检查或不检查?因为如果指针是否为空,检查每个接收到指针的函数感觉是错误的。
我知道我可以传递Vectors 的值而不是指针,但这只是一个示例。假设我们正在处理大型结构。
【问题讨论】:
-
就我个人而言,
NULL仅当函数的某些其他部分在没有它的情况下可以在逻辑上执行时才检查参数。我通常还会断言我期望有效的指针的有效性。我认为很多都归结为样式和文档。不幸的是,你确实失去了假设指针有效性的绝对权利,你只需要用常识来弥补它,并相信你的函数调用者也会这样做。