gpt4 book ai didi

c - 如何在 C 中创建和读取数据类型的动态数组?

转载 作者:太空宇宙 更新时间:2023-11-03 23:36:50 25 4
gpt4 key购买 nike

我正在尝试操作名为 car 的类型的动态数组,但我不断收到“段错误”或“不兼容类型”错误。

我已经尝试了“*”和“&”的所有组合,但似乎没有任何效果。

结构类型定义为:

struct car{
unsigned int id;
char *name;
};

然后在 main.c 中创建它:

struct car *testing;

我正在尝试从先前创建的数组 (cars) 中引入数据,并在另一个名为 void init_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;
}

该函数应将汽车数组“cars”复制到新的动态数组“testing”,另一个函数应该能够读取“testing”的数据,但在执行 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);

关于c - 如何在 C 中创建和读取数据类型的动态数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58448102/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com