在C ++中初始化指针?

时间:2015-03-01 03:05:13

标签: c++ variables memory dynamic

所以我在我的代码中有这些语句(还有许多其他行,但这给我带来了麻烦):

int *vector1;

if (vector1 == NULL)
    {

    }

当我尝试运行它时,它说"未初始化的局部变量' vector1'使用" 如果我把"& vector1 == NULL"它并没有抱怨,但也没有正常工作。

我真的不明白为什么我会收到这个错误。如果vector1没有指向任何东西,我希望它能做点什么。

2 个答案:

答案 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。它们是用随机垃圾数据初始化的。

如果您想使用0NULLnullptrall the same thing)对其进行初始化:

int *vector1 = 0; // or NULL, or nullptr.