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

标签 c pointers

假设您定义了一个(全局或局部)指针变量,如下所示:

    void *this_is_a_pointer;

没有给它赋值 "= NULL; "

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

* 还有,空指针指向NULL是什么意思?那是说它可以指向字面上的任何地方吗? (基本上,“NULL 的地址位置”到底是什么?)

最佳答案

(global or local)

这实际上是造成差异的原因。

一般来说,如果你没有初始化一个变量,它就不会被初始化并且从它读取是未定义的行为。但是,如果变量具有静态存储持续时间,那么它会自动初始化为零(指针为空)。

// 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;
}

关于c - 当您处理 C 和其他具有指针的语言时,初始化指针会自动将其设置为 null 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7782260/

相关文章:

c - 指向静态定义的二维数组的指针

c 开放式简历;如何将二维数组转换为 IplImage?

c - 用简单的 MPI 代码读写测试文件时出错

c - 使用另一个指针变量 char *c 操作和访问 char *s 指针变量(字符串) - C

arrays - 为什么结构数组比较有不同的结果

c++ - 通过指针进行的内存复制有时会丢失数据

c - 重新注入(inject)变量参数列表 C 语言

将字符串连接到另一个字符串的开头

c - 为在 void 函数中创建的动态数组赋值不会在 main() 中返回相同的值

c++ - 源文件中的 Typedef 私有(private)结构原型(prototype)