La définition d'une Structure en C avec Malloc

J'ai demandé à un question plus tôt sur la définition d'une structure à l'aide de malloc.
Ce fut la réponse m'a été donné par la majorité:

struct retValue* st = malloc(sizeof(*st));

Je montrais un ami de mon code, et nous sommes arrivés à un point d'achoppement.
Quelqu'un pourrait-il expliquer pourquoi ce code fonctionne?
De mon point de vue, *st n'a pas été définie lorsque vous malloc, alors il pourrait être n'importe quel type de déchets. Il devrait être malloc(sizeof(struct retValue))

Merci pour toute aide

Vous avez répondu à votre propre question. sizeof(struct retValue) est correct
Désolé, la question n'était pas " Est-ce correct, ou ce qui est juste?", il était " Pourquoi ce travail?'
Il pourrait aider à comprendre si vous modifiez la terminologie. Vous n'êtes pas définition une structure à l'aide de malloc, vous êtes affectation une structure à l'aide de malloc. Vous êtes à la définition de st, qui est un pointeur (pas une structure (struct). Le pointeur est déjà définis et disponibles pour une utilisation dans l'initialiser expression (sur le membre de droite du signe égal), il n'a pas de valeur, donc la plupart des utilisations seraient nuls. Ceci est OK, cependant, parce que sizeof n'utilise pas la valeur.

OriginalL'auteur Blackbinary | 2010-02-01