Я пытаюсь создать и инициализировать указатель на массив указателей на структуры.Этот массив будет передан во многие части моей программы.
Это мой код:
file.h
#ifndef FILE_H
#define FILE_H
typedef struct Object Object;
void init(Object*** objs);
#endif
file.c
#include <stdio.h>
#include <stdlib.h>
#include "file.h"
struct Object
{
int a, b;
};
void init(Object*** objs)
{
*objs = malloc(5 * sizeof(Object*));
for(int i = 0; i < 5; i++)
{
*objs[i] = malloc(sizeof(struct Object));
*objs[i] -> a = i; // arbitrary member access
*objs[i] -> b = i * 2; // arbitrary member access
}
}
main.c
#include "file.c"
int main(int argc, char** argv)
{
Object** prog_objs;
init(&prog_objs);
// should now have a pointer to an array to pass around
for(int i = 0; i < 5; i++)
{
printf("Obj: %d, %d\n", prog_objs[i] -> a, prog_objs[i] -> b);
}
return 0;
}
Я не совсем уверен, почему это не работает.Я уверен, что мой main()
правильный, и проблема где-то в функции init()
.Я пробовал различные способы инициализации элементов массива в качестве указателей на структуры, но я продолжаю получать ошибки компиляции или ошибки segfaults.
Любые советы о том, где мои проблемы, очень ценятся!Спасибо