【发布时间】:2011-06-18 02:14:55
【问题描述】:
我已经初始化了一个结构数组(只包含一个名为 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 the array这样的短 cmets,那就太好了。另外,您只提到了一次ptr,并且您没有解释它的来源。一开始你有loc_ptr。