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;
}
È stato utile?

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
scroll top