Hello !!!
![]()
![]()
Ho un piccolo dubbio sui puntatori a puntatori (**) a strutture!! è come usare i puntatori normali??
E sopratutto : cosa vuol dire : "request for member "giorno" in something not a structure or union" ??
![]()
![]()
Grazie in anticipo!!!!
Hello !!!
![]()
![]()
Ho un piccolo dubbio sui puntatori a puntatori (**) a strutture!! è come usare i puntatori normali??
E sopratutto : cosa vuol dire : "request for member "giorno" in something not a structure or union" ??
![]()
![]()
Grazie in anticipo!!!!
L'errore vuol dire che hai cercato di accedere ad un campo di qualcosa che non è una struttura. Per accedere ai campi di un puntatore a struttura devi utilizzare l'operatore ->Originariamente inviato da Fabiuz
Hello !!!
![]()
![]()
Ho un piccolo dubbio sui puntatori a puntatori (**) a strutture!! è come usare i puntatori normali??
E sopratutto : cosa vuol dire : "request for member "giorno" in something not a structure or union" ??
![]()
![]()
Grazie in anticipo!!!!
Nel caso del doppio puntatore devi prima dereferenziare... (*doppio_puntatore)->campo
Occhio alle parentesi tonde, vanno messe
puoi farmi un esempio?
ma va scritto così?????:
scanf("%d", (**)diario->tempo.ora);
![]()
No, sicuramente non va scritto cosìOriginariamente inviato da Fabiuz
puoi farmi un esempio?
ma va scritto così?????:
scanf("%d", (**)diario->tempo.ora);
![]()
Se ho ben capito quello che devi fare...
scanf ("%d", &(((*diario)->temp).ora))
Premesso che diario sia di tipo puntatore a puntatore a struttura.
Io alla funzione void crea_diario (Diario **diario) cosa devo passare all'atto della chiamata nel main??
Diario *diario;
crea_Diario(diario)
oppure
Diario* diario;
crea_diario(&diario);
?????
perchè dopo aver inserito il primo campo mi da segmentation fault!!!!
diario->tempoOriginariamente inviato da Fabiuz
puoi farmi un esempio?
ma va scritto così?????:
scanf("%d", (**)diario->tempo.ora);
![]()
equivale a :
(*diario).tempo
se questo e' un puntatore puoi referenziarlo con:
(*(*diario).tempo).nonsoche
Così non credo così funzioni, il derefenziamento assieme all'operatore punto è una soluzione comunque valida, ma dovrebbe essereOriginariamente inviato da kentaromiura
diario->tempo
equivale a :
(*diario).tempo
se questo e' un puntatore puoi referenziarlo con:
(*(*diario).tempo).nonsoche
((*(*diario)).tempo).nonsoche
Ovviamente, se usi il doppio puntatore, devi passare l'indirizzo di memoria del puntatore singolo, percui crea_diario (&diario)Originariamente inviato da Fabiuz
Io alla funzione void crea_diario (Diario **diario) cosa devo passare all'atto della chiamata nel main??
Diario *diario;
crea_Diario(diario)
oppure
Diario* diario;
crea_diario(&diario);
?????
perchè dopo aver inserito il primo campo mi da segmentation fault!!!!
Originariamente inviato da Ilmalcom
Così non credo così funzioni, il derefenziamento assieme all'operatore punto è una soluzione comunque valida, ma dovrebbe essere
((*(*diario)).tempo).nonsoche![]()
puo' essere..
forse ho capito male ma se non vedo il codice e la struttura
mi e' difficile ipotizzare una soluzione..
se passo l'indirizzo di memoria del puntatore singolo mi dà di nuovo segmentation fault :
io faccio così:
Diario *diario;
crea_diario(&diario);
ma mi da segmentation fault!
devo fare (che ne so) un typedef dopo la dichiarazione della struct Diario tipo : typedef Diario* d????