如果变量未初始化,假设if语句将始终有效是否安全?假设是肯定的,但我被告知变量中的随机垃圾位并不总是意味着检查null是否有效。
Void afunction () {
char* someStr;
if (someStr)
{
// do something
}
}
答案 0 :(得分:8)
如果变量未初始化,可以假设if语句总是有效吗?
没有。读取未初始化的存储会调用未定义的行为。您无法对此代码做出安全假设。
不要这样做!
答案 1 :(得分:5)
绝对不能保证始终有效。你必须自己初始化它。
char* someStr = NULL;
或其他一些价值。
答案 2 :(得分:2)
未初始化的变量是不确定的。在分配值之前读取它们会导致未定义的行为。
检查指针是否为NULL
:
if (someStr) {
// Don't use it (or do for some weird reason)
}
为了安全起见并确保指针是您想要的值,我会在初始化时为其赋值。
char* someStr = NULL;
您还可以将指针设置为静态以避免未定义的行为。
static char* someStr;
答案 3 :(得分:1)
未定义someStr
的值。通常,它将被设置为堆栈周围的一些旧值。所以,它可能是NULL(即0)。