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