Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 29
  1. #1
    Utente bannato
    Registrato dal
    Aug 2001
    Messaggi
    894

    [C++] Chi mi sa spiegare bene la differenza tra INDIRIZZO e PUNTATORE?

    Grazie

  2. #2
    Ciao

    Un indirizzo è una specie di "indice" che identifica una locazione di memoria, un puntatore è un "qualcosa" che punta a una locazione di memoria.

    Esempio:

    codice:
    int k = f;
    int * p = NULL;  // Questo è un puntatore che punta a NULL
    p = &k; // Ora il puntatore punta all'indirizzo della variabile k, ovvero alla posizione nella memoria dove il valore di k si trova. per accedere al valore di k bisogna fare *p
    Spero di non aver fatto errori.. (altrimenti.. )

  3. #3
    l'indirizzo di una variabile o di un oggetto in generale è l'indirizzo di memoria dove effettivamente l'oggetto è allocato in memoria.

    un puntatore è una variabile e il suo contenuto è un indirizzo, dopo essere stato inizializzato, punta alla prima locazione dell'oggetto cui esso punta.

    quindi un puntatore ha un prorpio indirizzo che è l'area in cui è allocato e il suo valore è un riverimento ad un'altra area di memoria.

    altri chiarimenti?
    vuoi un esempio?

    Spero di essermi spiegato abbastanza.

    PS: se vuoi creati un esempio allocando una variabile e un puntatore che punta alla variabile, assegna un valore alla variabile e poi stampa a video:
    il contenuto della variabile e l'indirizzo
    il valore dell'oggetto puntato dal puntatore e il valore del puntatore e l'indirizzo del puntatore.
    noterai che il valore del puntatore è uguale all'indirizzo della variabile allocata in precedenza.

    Spero di non essermi sbagliato... a quest'ora il sonno, la neve e l'alcool hanno strani effetti collaterali.

  4. #4
    31-01-2003 23:01

    SONNO E ALCOOL!?!? A quest'ora i neonati fanno l'ultima poppata! :gren:

    Ma LOL!

    Scusate ma non resistevo..

  5. #5
    Utente bannato
    Registrato dal
    Aug 2001
    Messaggi
    894
    Per esempio se ho:

    int* c;
    int s = 8;

    c = &s;

    cout<< c; //<-- che valore stampera c? 8 o il valore dell'indirizzo di c?


    se ho invece:

    int ciao = 4;
    funzione(ciao);

    //accedo alla funzione

    void funzione(&ciao);
    [
    ciao = 40; //ora ciao avra il vaolre di 40 non piu di 4 o sara
    //spostato all'indirizzo di memoria 40? Perche la funzione
    //riceve come argomento l'indirizzo non era lo stesso se
    //riceveva un puntatore alla variabile ciao cioe void funzione(*ciao);?
    ]

  6. #6
    Utente bannato
    Registrato dal
    Aug 2001
    Messaggi
    894
    nessuno puo aiutarmi?

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    1,202
    Originariamente inviato da gif
    Per esempio se ho:

    int* c;
    int s = 8;

    c = &s;

    cout<< c; //<-- che valore stampera c? 8 o il valore dell'indirizzo di c?
    Stamperai l'indirizzo di memoria di s, infatti '&' rappresenta l'indirizzo, '&s' l'indirizzo di s, che tu hai affidato a c con 'c=&s'; per stampare invece 8, devi scrivere:

    cout<< *c;

    che stampa il valore presente nell'indirizzo di memoria affidato a c (&s appunto).

    se ho invece:

    int ciao = 4;
    funzione(ciao);

    //accedo alla funzione

    void funzione(&ciao);
    [
    ciao = 40; //ora ciao avra il vaolre di 40 non piu di 4 o sara
    //spostato all'indirizzo di memoria 40? Perche la funzione
    //riceve come argomento l'indirizzo non era lo stesso se
    //riceveva un puntatore alla variabile ciao cioe void funzione(*ciao);?
    ]
    Se passi per indirizzo, ora ciao vale 40, perchè ne hai modificato il valore, non l'indirizzo; in pratica con il passaggio per indirizzo, il ciao della funzione è solo un collegamento al ciao del main, se lo cambi nella funzione, cambia anche nel main.
    Sì, puoi anche passargliela come puntatore in questo modo:

    void funzione(int* ciao);

    Debian GNU/Linux sid
    Publishing a theory should not be the end of one's conversation with the universe, but the beginning. (Eric S. Raymond)
    Kernel 2.6.14-ck1

  8. #8
    Utente bannato
    Registrato dal
    Aug 2001
    Messaggi
    894
    Originariamente inviato da Kamui
    Se passi per indirizzo, ora ciao vale 40, perchè ne hai modificato il valore, non l'indirizzo; in pratica con il passaggio per indirizzo, il ciao della funzione è solo un collegamento al ciao del main, se lo cambi nella funzione, cambia anche nel main.
    Sì, puoi anche passargliela come puntatore in questo modo:

    void funzione(int* ciao);
    come hai detto passando l'indirizzo ora avro un collegamento al ciao della main. ma se volevo cambiare il valore contenuto in ciao non era lo stesso, quindi al posto di passare il parametro come indirizzo, passarlo semplicemente come puntatore? in questo modo non sia ha lo stesso risultato?:

    int ciao = 4;
    funzione(ciao);

    //accedo alla funzione

    void funzione(*ciao);
    [
    ciao = 40;
    ]

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    1,202
    Sì, ma ricordati di scrivere anche il tipo di variabile a cui punta:

    void funzione(int *ciao);
    [
    ciao = 40;
    ]
    Debian GNU/Linux sid
    Publishing a theory should not be the end of one's conversation with the universe, but the beginning. (Eric S. Raymond)
    Kernel 2.6.14-ck1

  10. #10
    Utente bannato
    Registrato dal
    Aug 2001
    Messaggi
    894
    Si gia.
    Ma il punto e questo, quindi tanto passare l'indirizzo di una variabile, tanto passargli un puntatore ad essa il risultato e lo steso?

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.