在C中引用未初始化的变量

时间:2017-04-08 07:24:07

标签: c initialization

如果我引用未初始化的变量,会发生什么?等,

void func(int *p)
{
  // My operation
}

int main()
{
  int a;
  func(&a);
}

1 个答案:

答案 0 :(得分:2)

  

如果我引用未初始化的变量

,会发生什么

func()收到a中定义的变量main()地址。在func()内,pa定义的指针func(int * pa)指向保存不确定值为a的内存。

func()可以通过

分配给a
*pa = 42;

a设置为42

如果func()做了

int b  = *pa;

它读取未初始化的内存,即a indeterminate 值,这将调用Undefined Behaviour

从C11标准(草案):

  

J.2未定义的行为

     

1在以下情况下,行为未定义:

     

[...]

     
      
  • 使用具有自动存储持续时间的对象的值   不确定
  •