当您处理C和其他具有指针的语言时,初始化指针会自动将其设置为null吗?

Dar*_*lar 0 c pointers

假设您已经定义了一个(全局或局部)指针变量,例如:

    void *this_is_a_pointer;
Run Code Online (Sandbox Code Playgroud)

没有给它值"= NULL;"

这会自动给你一个NULL ptr(一个指向NULL的指针)吗?

*另外,空指针指向NULL意味着什么?这是说它可以指向字面上的任何地方吗?(基本上,什么是" NULL的地址位置"?)

GMa*_*ckG 7

(全球或本地)

这实际上是产生差异的原因.

通常,如果您没有初始化变量,那么它不会被初始化,并且从中读取它是未定义的行为.但是如果变量具有静态存储持续时间,那么它会自动初始化为零(指针为null).

// foo.cpp

void* this_is_null;

void whatever(void)
{
    static int* and_so_is_this;
}

void not_whatever(void)
{
    float* but_this_local_is_uninitialized;
}
Run Code Online (Sandbox Code Playgroud)