【发布时间】:2014-07-18 14:47:29
【问题描述】:
考虑以下代码sn-p:
unsigned int i;
double* u = new double [10];
for (i=0; i<10; i++)
{
double u = 5.0;
// Other code
}
delete[] u;
变量名 u 可以使用两次吗?还是对此不屑一顾?代码使用某些编译器会编译失败吗?
编辑:这样更好吗?还是对代码的未来维护者仍然感到困惑?
unsigned int i;
double* u = new double [10];
// Do stuff with u
delete[] u;
for (i=0; i<10; i++)
{
double u = 5.0;
// Other code
}
【问题讨论】:
-
您确定需要在循环内使用外部
u吗?不然还有什么意义? -
内部变量 u 将外部变量 u 隐藏在它们的作用域和内部作用域中,具体取决于是否可以引用外部变量以某种方式变化。
-
如果我没记错的话它会起作用,但这是一种不好的做法,你几乎不必这样做。
-
这只是一个简单的例子。外层
u不在循环内部使用,而是在循环之后使用。 -
@πάνταῥεῖ 为什么不呢?循环中
u的范围是从定义到循环底部。在该范围之外,外部的u是可见的。