【发布时间】:2014-02-05 14:06:12
【问题描述】:
我正在编写一个函数,它返回一个指向数字数组的指针。为了能够使用指针遍历数字,我将最后一个元素设置为 NAN 以标记数组的结尾。
我的循环类似于
for(int* it=ptr;!isnan(*it);++it)
//print *it
但它一直运行直到崩溃,所以我写了一些测试代码:
int* test = new int[1];
*test = NAN;
cout << isnan(NAN) << endl;
cout << isnan(*test) << endl;
结果是:
1
0
我已经看到很多使用NAN 作为数组中的“停止器”的示例。那为什么不起作用呢?
【问题讨论】:
-
NAN是一个特殊的浮点值(对于floats/doubles)- 没有NAN用于整数类型。 -
你应该只存储数组的大小而不是使用一些哨兵值。
-
s/'stopper'/sentinel.