Frage

Ich möchte unter Doppelzeiger Mitglied der Struktur ändern. Wissen Sie, wie?

Beispiel-Code

typedef struct {
    int member;
} Ttype;

void changeMember(Ttype **foo) {
   //I don`t know how to do it
   //maybe
   *foo->member = 1;
}
War es hilfreich?

Lösung

Versuchen

(*foo)->member = 1;

Sie müssen explizit verwenden die * erste. Ansonsten ist es ein Versuch, zu dereferenzieren Mitglied.

Andere Tipps

Durch Operatorpräzedenz, müssen Sie Klammern um diese setzen:

(*foo)->member = 1;

Sie können eine temporäre Variable verwenden, die Lesbarkeit zu verbessern. Zum Beispiel:

Ttype *temp = *foo;
temp->member = 1;

Wenn Sie die Kontrolle über diese und erlaubt haben C ++ zu verwenden, ist der bessere Weg Referenz zu verwenden. Zum Beispiel:

void changeMember(Ttype *&foo) {
   foo->member = 1;
}

vielleicht (* foo) -> member = 1 (wenn es dynamisch zugewiesen wird)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top