Я инициализируется массив структур (содержащих только строку символов, называемое name
Этот массив структура затем присваивается указатель, например, так:.Назначение массива структура указателю
location locations[2] = {{"Padstow", 50.5384, -4.9378},
{"Newquay", 50.412, -5.0757}};
int location_size = 2;
location *loc_ptr;
loc_ptr = &locations[0];
// pick an element to remove
location element = loc_ptr[1];
remove_element(loc_ptr, location_size, element);
Я затем передать этот указатель в функцию. Внутри этой функции я удаляю элемент массива, это выполняется путем итерации по текущему массиву и создания нового массива. Новый массив содержит данные, которые я ожидаю.
Внутри функции remove_element
:
void remove_element(location *ptr, int count, location element) {
// create the new array
location new_locations[count-1];
// go through and pick out the non-matching element
// create the new pointer
location *new_ptr;
new_ptr = &new_locations[0];
// assign the new array to the original pointer
ptr = new_ptr;
}
Однако он не меняет исходные данные. Не могли бы вы объяснить, что я делаю неправильно, чтобы назначить этот новый массив моему исходному указателю?
Пожалуйста, добавьте следующее к вашему вопросу. Как вы создаете новый массив в функции? Как вы возвращаете созданный массив из этой функции? Было бы неплохо, если бы вы просто опубликовали код функции, заменив все нерелевантные коды на короткие комментарии, например '// modify array '. Кроме того, вы упоминаете 'ptr' только один раз, и вы не объяснили, откуда оно взялось. Сначала у вас был 'loc_ptr'. –