我正在尝试操作名为 car 的类型的动态数组,但我不断收到"分段错误"或"不兼容类型"错误。
我已经尝试了"*"和"&"的所有组合,但似乎没有任何效果。
结构类型定义为:
struct car{
unsigned int id;
char *name;
};
然后在main.c中创建它:
struct car *testing;
我正在尝试使用另一个名为void init_cars的函数引入以前创建的数组(cars(中的数据:
void init_cars(struct car *array[]){
int i;
array = malloc (SIZE * sizeof(struct car));
for(i=0; i<SIZE;i++){
array[i]->id=cars[i].id;
array[i]->name=cars[i].name;
}
该函数应该将汽车">汽车"数组复制到新的动态数组"测试"中,另一个函数应该能够读取"测试"的数据,但是我在执行malloc或加载数据时出现分段错误。
void init_cars(struct car **array){
int i;
*array = malloc (SIZE * sizeof(struct car));
for(i=0; i<SIZE;i++){
(*array)[i].id=cars[i].id;
(*array)[i].name=cars[i].name;
}
由于您正在传递struct car **
因此您需要在分配时取消引用它两次。
您可以从main
致电如下。
struct car *testing;
init_cars(&testing);