正如我从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");
答案 0 :(得分:2)
你不能。
未初始化的值可以是任何值。未初始化的指针可以指向任何地方。它甚至可以通过巧合指向有效数据。
初始化指向NULL
或真实值的指针;如果您发现自己看到未初始化的值,那么某个地方的程序员做错了什么。