verschachtelte Strukturen und Zeiger

Ich mache das jedes Mal kaputt, wenn ich in ein C-Projekt zurückspringe. Beim Versuch, auf eine Struktur innerhalb einer Struktur zuzugreifen, tritt ein Segfault auf. Angenommen, ich habe die folgenden (vereinfachten) Strukturen für ein Spiel:

struct vector {
    float x;
    float y;
};

struct ship {
    struct vector *position;
};

struct game {
    struct ship *ship;
} game;

Und eine Funktion zum Initialisieren des Schiffes:

static void
create_ship(struct ship *ship)
{
    ship = malloc(sizeof(struct ship));
    ship->position = malloc(sizeof(struct vector));
    ship->position->x = 10.0;
}

Dann unten in main ():

int main() {
    create_ship(game.ship);
    printf("%f\n", game.ship->position->x); // <-- SEGFAULT
}

Antworten auf die Frage(3)

Ihre Antwort auf die Frage