程序很長(這裏是完整版本:http://pastebin.com/cvg1eSJ1),(sample.txt如下所示:http://pastebin.com/hWihPpSj,它是INPUT文件,另一個命令行參數是輸出文件。 ),但我發佈了處理「第二指針列表」的部分。基本上我有一個47個左右的項目列表,我需要添加一定範圍之外的項目到第二個列表。這是我第一次保存值的地方。我使用「tempAddress」只是爲了清理代碼。我只是將當前地址的值,檢查它,如果它匹配,然後將其添加到第二個閱讀列表。指針存儲器中的最後一個值不正確
for (i; i < numElements; i++) {
tempAddress = firstReadingList++;
if ((double) *tempAddress > plusOutlier || (double) *tempAddress < minusOutlier) {
*secondReadingList++ = *tempAddress;
numOutliers++;
printf("%d ", *tempAddress);
}
}
後來,我不得不在另一個函數中寫這個讀取列表到一個文件。我打印出來的值,只有最後一個值是不正確的。我不知道爲什麼。這裏是我並寫入到文件中的代碼(tempAddress是在這種情況下,一個新的變量)
for (i; i < numElements; i++) {
tempAddress = (outlierList + i);
printf("%d ", *tempAddress);
fprintf(out, "%d ", *tempAddress);
}
在所述第一函數的輸出如下所示:
752 843 840 848 752 850 753(這是正確的)
第二個代碼片段輸出這個
752 843 840 848 752 850 577(577是不正確的)
難道我做錯了什麼?我還是比較新的指標。我不會在函數之間的任何點修改secondListPointer。
*「程序很長,但我發佈了相關部分。」* - 如果您不明白錯誤是什麼,您如何知道哪些部分是相關的? – melpomene
我的意思是這是第二個指針列表被引用的唯一部分。該程序的其餘部分只是處理初始化第一個列表,其中的數據是正確的(平均值,標準差等) –
我甚至不知道你指的是什麼*指針列表*所以我不能幫你所有。另外,*第二個指針列表*?第一個是什麼? – melpomene