c - 如何在 C 中创建和读取数据类型的动态数组?
问题描述
我正在尝试操作名为 car 的类型的动态数组,但我不断收到“分段错误”或“不兼容类型”错误。
我已经尝试了 '*' 和 '&' 的所有组合,但似乎没有任何效果。
结构类型定义为:
struct car{
unsigned int id;
char *name;
};
然后在 main.c 中创建它:
struct car *testing;
我正在尝试使用另一个名为 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;
}
该函数应该将汽车数组“汽车”复制到新的动态数组“测试”,另一个函数应该能够读取“测试”的数据,但是在执行 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);
推荐阅读
- r - 当我在 vars() 中只传递一列时,为什么 mutate_at 没有为新列创建不同的名称?
- javascript - 删除带有ID的JS中的类(多个)(php echo)
- python - 需要发送一个带有很长字符串值的 JSON post 请求
- import - 如何在dm脚本中导入其他源代码文件
- python - 如何在曲线拟合中检查形状是否适合 sigma
- javascript - 如何设置我们不会遇到第三方页面问题的 SameSite 值?
- python-3.x - 输入类型是否有规范的“isinstance”实现?
- javascript - 得到
- ip - Google Calendar API:IP 地址追踪和配额价格
- java - 将“10s”或“10h”之类的字符串转换为 Duration