首先,我在使用XCode C++時遇到錯誤。我將一個指針變量聲明爲常量,並將該值設置爲一次。然後在代碼中循環運行3-5次,第一次是正確的,但依賴於變量的數量,座標值變爲接近0(即4.59163e-41)。我知道內存地址不會改變,只是它保存的值。此外,我正在處理大量的數據,我的意思是2000到20,000個座標。我敢肯定,無論是大問題還是小問題,我都會引起這個問題,所以我們將不勝感激。下面是一些用於改變[不那麼]常數可變的代碼:恆定變量正在改變,但不在內存中
我聲明它們在頭文件爲:
const float* m_xPointValues;
const float* m_yPointValues;
然後在cpp文件我將它們設置在下面的功能:
void ccGraphDisplay::setPointValues(float* xPointValues, float* yPointValues, unsigned numberOfPoints)
{
assert(xPointValues);
assert(yPointValues);
m_xPointValues = xPointValues;
m_yPointValues = yPointValues;
m_numberOfPoints = numberOfPoints;
....}
在循環功能我轉向他們,但據我所知,這並沒有改變它們的價值
然後:
for (unsigned i=0;i<m_numberOfPoints;++i)
{
shiftedXValue = (((m_xPointValues[i] - m_xAbsoluteMin)/(m_xAbsoluteMax-m_xAbsoluteMin))*(m_roi[2]-m_roi[0]))+m_roi[0];
shiftedYValue = (((m_yPointValues[i] - m_yAbsoluteMin)/(m_yAbsoluteMax-m_yAbsoluteMin))*(m_roi[3]-m_roi[1]))+m_roi[1];
}
對我來說這是一個非常奇怪的錯誤。我不會在其他任何地方更改m_xPointValues或m_yPointValues的值,並且在最大的數據集中只有座標的末端部分發生變化。我還設置了循環來打印循環開始和結束處的值,並且結束始終與開始時相同,但是當循環開始時它的值發生變化。
最後一些我已經嘗試調試想法包括: 1)從存儲浮到雙打 2)更改指針不再是恆定的在恆定值(雙鍵和浮子 3)的過去而變化的指針)
任何幫助將不勝感激(包括想法嘗試!)。 謝謝!
謝謝!這是我宣佈他們的方式。我最初有他們:float xPointValues [numberOfPoints];但通過將它們更改爲:float * xPointValues = new float [numberOfPoints];在函數運行後它們不再被刪除。 – user3817808