我正在寫一個函數,它返回一個指向數組數組的指針。爲了能夠使用指針迭代數字,我將最後一個元素設置爲NAN
以標記數組的末尾。
我的循環是像當通過指針訪問時,NAN是否返回false?
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'是一個特殊的浮點值(對於'float's /'double's) - 整數類型沒有'NAN'。 –
您應該只存儲數組的大小而不是使用一些標記值。 – Simple
s /'塞子'/哨兵。 – MSalters