estruturas e ponteiros aninhados

Eu penso nisso quase toda vez que eu pulo de volta para um projeto em C. Estou recebendo um segfault ao tentar acessar uma estrutura dentro de uma estrutura. Digamos que eu tenha as seguintes estruturas (simplificadas) para um jogo:

struct vector {
    float x;
    float y;
};

struct ship {
    struct vector *position;
};

struct game {
    struct ship *ship;
} game;

E uma função para inicializar o navio:

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

Então abaixo no main ():

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

questionAnswers(3)

yourAnswerToTheQuestion