【发布时间】:2015-04-26 09:02:29
【问题描述】:
我在看c++代码,开发者经常使用这种模式:
float *_array;
//...
while (expression) {
if (_array) {
// ...
_array += 1;
} else {
// ...
}
}
外部 while 循环将独立于 _array 指向的位置终止。我的问题是关于 if (_array) 条件和该子句中的增量。
我首先认为它应该检查指针是否“用尽”数组,但似乎并非如此。我用这个简单的 sn-p 对其进行了测试:
float *p = new float[5];
int i = 0;
for (i = 0; i < 10; i++) {
if (p) {
std::cout << "ok\n";
} else {
std::cout << "no\n";
}
p += 1;
}
这将打印 10 次“ok”。所以if (pointer) 的计算结果为true,即使指针超出了定义的数组长度。
但在这种情况下,if (pointer) 的目的还有什么?
【问题讨论】: