Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,563

    C++ - Cosa sono i doppi puntatori?

    Molte volte vedo funzioni o altri che richiedono un parametro di questo tipo
    codice:
    **Puntatore
    Sarebbe un doppio puntatore...ma...cosa è?
    Un puntatore che punta a un puntatore che punta a uno spazio di memoria???
    E per passarlo come parametro di deve fare cosi...
    codice:
    typedef int* Pint;
    Pint a;
    miafunzione(&a);
    Giusto? oppure anche
    codice:
    int *a;
    miafunzione(&*a);

  2. #2
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657

    Re: C++ - Cosa sono i doppi puntatori?

    Originariamente inviato da XWolverineX
    Molte volte vedo funzioni o altri che richiedono un parametro di questo tipo
    codice:
    **Puntatore
    Sarebbe un doppio puntatore...ma...cosa è?
    Un puntatore che punta a un puntatore che punta a uno spazio di memoria???
    anche a me piacerebbe saperlo

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Nulla di particolare ...

    E' un puntatore ad un puntatore.

    int a;
    int *p;
    int **pp;

    a = 100;

    p = &a;
    pp = &p;

    printf("%d\n", a);
    printf("%d\n", *p);
    printf("%d\n", **pp);

    Se lo passi, non devi fare cose particolari, se la funzione accetta un parametro puntatore a puntatore ... se

    int **pp;

    e

    void funz(int **x)

    allora passi

    funz(pp);

    E ovviamente, nessuno vieta di usare anche puntatori a puntatori a puntatori ...

    int ***p;

  4. #4
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657
    è ke funzione hanno?

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Beh ... gli utilizzi sono tanti.

    Ad esempio, saprai che i vettori sono identificati da un puntatore.

    Non so se hai mai utilizzato matrici, ma queste sono identificate da puntatori a puntatori, dato che possono essere considerati vettori di vettori.

    E poi, prova, come esercizio, a fare in modo che una funzione modifichi il valore di un puntatore ricevuto come parametro ...

  6. #6
    Con i puntatori a puntatori puoi realizzare acnhe dei piccoli tricks, dovresti vedere infatti come è semplice cancellare un nodo da una lista usando i doppi puntatori rispetto al farlo con i puntatori semplici.
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Oppure, ancora, pensa ad una tabella di puntatori a funzioni.

    E a un puntatore che, di volta in volta, a seconda dei casi, punti ad uno di questi puntatori per poter utilizzare una funzione piuttosto che un'altra ...

    Quello e' un puntatore ad un puntatore ed e' utilissimo ...

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    444
    a me viene sempre in mente l'esempio delle liste, come già detto. Molti non sanno infatti che quando passiamo un parametro per indirizzo in realtà passiamo un puntatore per valore, quindi il puntatore non può essere cambiato, per farlo bisogna passare un puntatore a quel puntatore.

    In realtà col c++ c'è il reference quindi le cose sono anche più facili, ma io sto sempre parlando del c.
    *********************************
    Andrea
    *********************************

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da Squall1988
    Molti non sanno infatti che quando passiamo un parametro per indirizzo in realtà passiamo un puntatore per valore, quindi il puntatore non può essere cambiato, per farlo bisogna passare un puntatore a quel puntatore.
    Infatti ... avevo scritto

    "E poi, prova, come esercizio, a fare in modo che una funzione modifichi il valore di un puntatore ricevuto come parametro ..."

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.