Я хочу знать, как хранить пользовательские объекты (не их указатели) в C. Я создал пользовательскую структуру с именем Node
#define MAXQ 100
typedef struct {
int state[MAXQ];
int height;
} Node;
(что работает), и я хочу сохранить несколько таких узлов в контейнере (без использования указателей, поскольку они не хранятся в другом месте), чтобы я мог получить к ним доступ позже.
Интернет, кажется, предлагает что-то вроде calloc()
, поэтому моей последней попыткой было сделать контейнер Neighbors
, следующий за этому примеру , с numNeighbors
, являющимся просто целым числом:
Node Neighbors = (Node*)calloc(numNeighbors, sizeof(Node));
При компиляции я получил ошибку из этой строки, говорящую
initializing 'Node' with an expression of incompatible type 'void *'
и в местах, где я ссылался на этот контейнер (как в Neighbors[i]
), я получал ошибки
subscripted value is not an array, pointer, or vector
Так как я испорчен Python, я понятия не имею, правильно ли я понял мой синтаксис (он должен сказать вам кое-что, что я все еще не там, после того, как прочесал тонну учебников, документов и стекопотока malloc()
, calloc()
и т. П.), Или если я использую совершенно неверный подход к хранению пользовательских объектов (поиск «хранить пользовательские объекты в C» в Интернете дает нерелевантные результаты, касающиеся iOS и C #, поэтому я был бы очень признателен за некоторые помощь).
РЕДАКТИРОВАТЬ: Спасибо за советы всем, он наконец-то скомпилирован без ошибок!