Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22
  1. #1
    Utente di HTML.it L'avatar di Fabiuz
    Registrato dal
    Nov 2004
    Messaggi
    892

    [C] puntatori a puntatori

    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!!!!

  2. #2
    Utente di HTML.it L'avatar di Ilmalcom
    Registrato dal
    Oct 2002
    Messaggi
    1,345

    Re: [C] puntatori a puntatori

    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!!!!
    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 ->
    Nel caso del doppio puntatore devi prima dereferenziare... (*doppio_puntatore)->campo
    Occhio alle parentesi tonde, vanno messe

  3. #3
    Utente di HTML.it L'avatar di Fabiuz
    Registrato dal
    Nov 2004
    Messaggi
    892
    puoi farmi un esempio?
    ma va scritto così?????:
    scanf("%d", (**)diario->tempo.ora);


  4. #4
    Utente di HTML.it L'avatar di Ilmalcom
    Registrato dal
    Oct 2002
    Messaggi
    1,345
    Originariamente inviato da Fabiuz
    puoi farmi un esempio?
    ma va scritto così?????:
    scanf("%d", (**)diario->tempo.ora);

    No, sicuramente non va scritto così Se ho ben capito quello che devi fare...
    scanf ("%d", &(((*diario)->temp).ora))

    Premesso che diario sia di tipo puntatore a puntatore a struttura.

  5. #5
    Utente di HTML.it L'avatar di Fabiuz
    Registrato dal
    Nov 2004
    Messaggi
    892
    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!!!!

  6. #6
    Originariamente inviato da Fabiuz
    puoi farmi un esempio?
    ma va scritto così?????:
    scanf("%d", (**)diario->tempo.ora);

    diario->tempo
    equivale a :
    (*diario).tempo
    se questo e' un puntatore puoi referenziarlo con:
    (*(*diario).tempo).nonsoche

  7. #7
    Utente di HTML.it L'avatar di Ilmalcom
    Registrato dal
    Oct 2002
    Messaggi
    1,345
    Originariamente inviato da kentaromiura
    diario->tempo
    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 essere
    ((*(*diario)).tempo).nonsoche

  8. #8
    Utente di HTML.it L'avatar di Ilmalcom
    Registrato dal
    Oct 2002
    Messaggi
    1,345
    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!!!!
    Ovviamente, se usi il doppio puntatore, devi passare l'indirizzo di memoria del puntatore singolo, percui crea_diario (&diario)

  9. #9
    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..

  10. #10
    Utente di HTML.it L'avatar di Fabiuz
    Registrato dal
    Nov 2004
    Messaggi
    892
    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????

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.