我在C标准中找不到,如果未初始化的指针评估为true,false,或导致未定义或实现定义的行为?例如:
{
int *p;
if (p)
do_sth();
}
答案 0 :(得分:1)
在示例代码中它的未定义行为,以访问C中的任何未初始化的值,无论其类型如何(unsigned char
除外)。
由于指针不是unsigned char
类型,因此行为未定义。
注意隐式初始化,例如将定义放在文件范围内,或者使用static
存储类说明符定义它,会导致默认情况下对象初始化为零。
有关详细信息,请参阅(Why) is using an uninitialized variable undefined behavior?