未初始化的指针是否评估为true,false或导致未定义的行为?

时间:2018-01-27 07:49:30

标签: c pointers initialization undefined-behavior

我在C标准中找不到,如果未初始化的指针评估为true,false,或导致未定义或实现定义的行为?例如:

{
    int *p;
    if (p)
     do_sth();

}

1 个答案:

答案 0 :(得分:1)

在示例代码中它的未定义行为,以访问C中的任何未初始化的值,无论其类型如何(unsigned char除外)。

由于指针不是unsigned char类型,因此行为未定义。

注意隐式初始化,例如将定义放在文件范围内,或者使用static存储类说明符定义它,会导致默认情况下对象初始化为零。

有关详细信息,请参阅(Why) is using an uninitialized variable undefined behavior?