所以我在我的代码中有这些语句(还有许多其他行,但这给我带来了麻烦):
int *vector1;
if (vector1 == NULL)
{
}
当我尝试运行它时,它说"未初始化的局部变量' vector1'使用" 如果我把"& vector1 == NULL"它并没有抱怨,但也没有正常工作。
我真的不明白为什么我会收到这个错误。如果vector1没有指向任何东西,我希望它能做点什么。
答案 0 :(得分:2)
int *vector1 = NULL;
if (vector1 == NULL)
{
}
可以正常使用
int *vector1 = nullptr;
if (vector1 == nullptr)
{
}
如果您想要更新一点,也可以。
默认情况下,指针不会设置为NULL。答案原因在于: Why aren't pointers initialized with NULL by default?
答案 1 :(得分:1)
即使您尚未初始化,警告uninitialized local variable 'vector1' used
也会告诉您正在使用vector1
。因此,它的价值可能是任何东西。
指针(非static
个) 不 默认初始化为0
。它们是用随机垃圾数据初始化的。
如果您想使用0
,NULL
或nullptr
(all the same thing)对其进行初始化:
int *vector1 = 0; // or NULL, or nullptr.