Come dice il titolo, qual è la differenza tra - > e . Pensavo fossero la stessa cosa?
Questi sono operatori diversi, anche se correlati.
In C, . è la selezione del campo e -> combina il dereferenziamento del puntatore e la selezione del campo. Quindi a->b equivale a (*a).b o più correttamente (*(a)).b .
Molte lingue non hanno sia . che -> . In C # e Java, ad esempio, che non hanno -> , l'operatore . esegue sia il dereference che la selezione del campo come in -> in C. Tuttavia, in C # e Java, . fa anche la selezione da uno spazio dei nomi, che non comporta il dereferenziamento (più simile all'operatore :: di C ++).
Nota: C # ha un costrutto unsafe che consente puntatori non sicuri / non elaborati e inoltre ha effettivamente l'operatore -> per lavorare con essi. Tuttavia, non incontrerai -> a meno che non lavori in unsafe code.
Leggi altre domande sui tag syntax