如果我引用未初始化的变量,会发生什么?等,
void func(int *p)
{
// My operation
}
int main()
{
int a;
func(&a);
}
答案 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在以下情况下,行为未定义:
[...]
- 使用具有自动存储持续时间的对象的值 不确定