【发布时间】:2015-09-04 21:03:17
【问题描述】:
为什么在这段代码中编译器在获取该变量的地址时不显示错误Use of unassigned local variable?
int i;
int* p = &i; // Use of unassigned local variable i ?
int j = *p; // j = 0
j = i; // both valid
这样可以正常编译,j 的值为 0。
【问题讨论】:
-
因为可能有
*p = 5;之类的代码,编译器无法轻易检测到,将5设置为i。 -
@Eser 没有必要这样做。编译器可能会停在
&i使用未分配的局部变量。 -
我认为,不会。编译器可以假设,p稍后会对其进行初始化。因为这是一个不安全的代码。无论如何,这并不完全适合 SO。
标签: c# unsafe unassigned-variable