Wie mit Zeigern zu arbeiten, um den Zeiger in C zu strukturieren?
-
19-08-2019 - |
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;
}
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