Come lavorare con il puntatore al puntatore alla struttura in C?
-
19-08-2019 - |
Domanda
Voglio cambiare membro della struttura con doppio puntatore. Sai come?
Codice di esempio
typedef struct {
int member;
} Ttype;
void changeMember(Ttype **foo) {
//I don`t know how to do it
//maybe
*foo->member = 1;
}
Soluzione
Prova
(*foo)->member = 1;
Devi prima usare esplicitamente *. Altrimenti è un tentativo di dereference membro.
Altri suggerimenti
A causa della precedenza dell'operatore, è necessario mettere tra parentesi:
(*foo)->member = 1;
È possibile utilizzare una variabile temp per migliorare la leggibilità. Ad esempio:
Ttype *temp = *foo;
temp->member = 1;
Se hai il controllo di questo e ti è permesso usare C ++, il modo migliore è usare il riferimento. Ad esempio:
void changeMember(Ttype *&foo) {
foo->member = 1;
}
maybe (* foo) - > member = 1 (se allocato dinamicamente)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow