正如我从this related question的答案中了解到的那样,未初始化的指针可以包含几乎任何内容,因此也可能碰巧等于NULL
。有没有办法区分未初始化的指针和空指针,例如给它们一个特定的值?
例如,考虑:
// could potentially print
FILE *f1;
if (f1 == NULL)
fprintf(stderr, "f1 is NULL");
// will never print, but is this a good/safe way?
FILE *f2 = -1;
if (f2 == NULL)
fprintf(stderr, "f2 is NULL");
最佳答案
你不能。
未初始化的值可以是任何值。未初始化的指针可以指向任何地方。它甚至可能纯粹出于巧合而指向有效数据。
初始化指向NULL
或实际值的指针;如果您发现自己看到未初始化的值,那么某个地方的程序员可能做错了什么。
关于c - 在C中,如何区分未初始化的指针和空指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51222685/