KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I've been trying to wrap my head around this the whole day... Basically, I have a struct called State that has a name and another one called StateMachine with a name, an array of states and total number of states added: #include <stdio.h> #include <stdlib.h> typedef struct State { const char * name; } State; typedef struct StateMachine { const char * name; int total_states; State ** states; } StateMachine; StateMachine * create_state_machine(const char* name) { StateMachine * temp; temp = malloc(sizeof(struct StateMachine)); if (temp == NULL) { exit(127); } temp->name = name; temp->total_states = 0; temp->states = malloc(sizeof(struct State)); return temp; } void destroy_state_machine(StateMachine* state_machine) { free(state_machine); } State * add_state(StateMachine* state_machine, const char* name) { State * temp; temp = malloc(sizeof(struct State)); if (temp == NULL) { exit(127); } temp->name = name; state_machine->states[state_machine->total_states]= temp; state_machine->total_states++; return temp; } int main(int argc, char **argv) { StateMachine * state_machine; State * init; State * foo; State * bar; state_machine = create_state_machine("My State Machine"); init = add_state(state_machine, "Init"); foo = add_state(state_machine, "Foo"); bar = add_state(state_machine, "Bar"); int i = 0; for(i; i< state_machine->total_states; i++) { printf("--> [%d] state: %s\n", i, state_machine->states[i]->name); } } For some reason (read low C-fu / years of ruby/python/php) I'm unable to express the fact that states is an Array of State(s). The above code prints: --> [0] state: ~ --> [1] state: Foo --> [2] state: Bar What happened with the first state added? If I malloc the states array on the first state added (e.g. state_machine =
Tags (comma-separated)
Save Edits
Cancel