【发布时间】:2010-11-26 17:29:26
【问题描述】:
我有这种情况:
{
float foo[10];
for (int i = 0; i < 10; i++) {
foo[i] = 1.0f;
}
object.function1(foo); // stores the float pointer to a const void* member of object
}
object.function2(); // uses the stored void pointer
在第二个函数调用中浮点指针的内容是否未知?当我运行我的程序时,我似乎得到了奇怪的结果。但是,如果我将 float foo[10] 声明为 const 并在声明中对其进行初始化,我会得到正确的结果。为什么会这样?
【问题讨论】:
-
这就是为什么我总是在同一列中排列相应的花括号。这样可以更轻松地检测范围内的变化。
-
保留对局部变量的引用或指针总是会变成未定义的行为。运气好的话,立马就粉了,不浪费一天调试时间……
-
@Imagist:使用这种语法,} 与
for对齐,因此您仍然可以清楚地看到范围的开始和结束位置。我不明白这有什么不同。