#include <iostream>
int main()
{
int a;
int *p = &a;
std::cout << *p << "\n";
}
Run Code Online (Sandbox Code Playgroud)
在这个程序中,当我保持a未初始化并尝试获取指针的输出时,它给了我-2.但是当我a用值初始化时,打印*p给了我这个价值.-2当我没有a初始化时,它为什么会给出?
因为使用未初始化的变量,无论是直接的还是间接的(通过指针或引用),都是未定义的行为[1] [2] [3].
[1] 这基本上意味着那些未初始化的变量将具有不确定的值.
[2] 我确信你永远不会喜欢代码中任何地方未定义的行为.
[3] 黄金法则:谨防未定义的行为.