我是C ++的新手,正在尝试学习指针的概念。以下示例来自 C ++ Primer 5th Edition 。关于声明,我有几个问题:
1)如果pi3被定义在一个区块外面会发生什么?
2)C ++中的块是什么?
3)未初始化的pi3表现出什么样的行为?
int *pi3; // if pi3 is defined inside a block, pi3 is uninitialized
答案 0 :(得分:1)
如果在任何块之外定义变量(如pi3
),它将是一个全局变量。
在C ++中,块分隔静态范围。块中声明的任何变量仅在该块中可用;他们将无法在街区之外使用。
未初始化的变量将具有不确定的值 - 它可能是任何东西!在指针的情况下,它可以指向任何地方......
陈旧地说,未初始化变量中的数据是“事先写入该空间的数据,因为我们懒得擦掉它。”事实证明,这是一个懒惰的原因:如果你定义一个大的局部变量(如长数组),自动擦除数据可能是一个真正的性能打击。所以,默认是保持未初始化。