2010-04-05 11 views

risposta

42

Come con qualsiasi puntatore. Per modificare l'indirizzo che punti a:

struct_inst->pointer = &var;

Per modificare il valorepresso l'indirizzo a cui punta:

*(struct_inst->pointer) = var;

+3

perfetto, il secondo era quello che stavo cercando. Grazie. –

+5

grazie. Dio mi piace come puoi sempre ottenere una risposta diretta qui – user12345613

+0

Sicuramente userò le parentesi per essere sicuro, ma è necessario – robisrob

4

Si sta creando un puntatore di tipo MyStruct , Penso che forse non volevi un puntatore:

int x; 
struct mystruct mystruct_inst; 
mystruct_inst.pointer = &x; 
*mystruct_inst.pointer = 33; 

Di se avete bisogno di un puntatore MyStruct sul mucchio, invece:

int x; 
struct mystruct *mystruct_inst = malloc(sizeof(struct mystruct)); 
mystruct_inst->pointer = malloc(sizeof(int)); 
*(mystruct_inst->pointer) = 33; 

/*Sometime later*/ 

free(mystruct_inst->pointer); 
free(mystruct_inst); 
+0

Volevo un puntatore. Il cambio di valore avviene all'interno di una funzione. Inoltre, ho già assegnato 'pointer' a un'area malloc-ed di memoria. –

+2

Suppongo che il punto della risposta fosse che il tuo esempio di codice non mostrava l'allocazione di alcuna memoria per 'struct mystruct', solo un puntatore non inizializzato su tale struttura. Ma ovviamente il 'puntatore' all'interno della struttura deve anche puntare da qualche parte. =) – Arkku

Problemi correlati