我在調用下面的函數,它計算傳入變量中給出的值。但是,當函數(calculate_distance
)運行時,傳遞到函數中的變量(loc_ptr
)中包含的數據似乎會改變。指針受函數調用影響不應該在哪裏
我已經遍歷代碼,發現變量loc_ptr
在函數調用中受到影響,而不是在函數本身內。
函數在while循環中被調用。 while循環的第一次迭代計算正確,僅在後續迭代中才會出現問題。
_注:位置是一個typedef'ed結構,其中包含char * name,double latitude,double longitude。 options
是doubles._
double calculate_distance(location from, location to) {
return to.latitude - from.latitude;
}
main() {
location current_location = {"Plymouth", 50.378565, -4.134339};
location locations[3] = {{"Padstow", 50.5384, -4.9378},
{"Newquay", 50.412, -5.0757},
{"Boscastle", 50.684, -4.6929}};
// create a pointer to an array of locations.
location* loc_ptr;
loc_ptr = &locations[0];
double options[3];
int i = 0;
int position = 3;
while (i < position) {
// calculate the distance between the current and other locations
options[position] = calculate_distance(current_location,
loc_ptr[position]);
position--;
}
// handle the rest of the algorithm
}
注意的陣列:該代碼是一個更大的算法的一部分,它的剪短因爲這將是相當長的。 while循環完成後,重構loc_ptr
數組以刪除其中一個元素。
什麼是位置?它是如何定義/分配的? – jswolf19 2011-02-14 08:46:26
選項[]在何處以及如何定義? – pmod 2011-02-14 08:46:44