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