Я вызываю функцию ниже, которая вычисляет значение, указанное в переданных переменных. Однако при запуске функции (calculate_distance
) данные, содержащиеся в переменной (loc_ptr
), которая передается в функцию, похоже, изменяются.
Я прошел по коду и обнаружил, что переменная loc_ptr
влияет на вызов функции, а не внутри самой функции.
Функция вызывается в цикле while. Первая итерация цикла while вычисляется правильно, проблема возникает только на последующих итерациях.
_Note: location является структурой с определением типа, содержащей имя char *, двойную широту, двойную долготу. options
- массив двойных чисел ._
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
перестраивается для удаления одного из элементов.