Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di Neocron
    Registrato dal
    Jul 2002
    Messaggi
    524

    [C] Puntatori negli argomenti di funzione

    Ragazzi ciao! Mi servirebbe il vostro aiuto in vista di un esame tra pochissimi giorni!

    Ho scritto questo codice;

    codice:
    import ...
    
    void funzione(int *p, int *p2){
    
         p2 = p;
    
    }
    
    int main (){
    
       int o = 23;
       int *c, *c2;
       
       c = &o;
       
       funzione(c,c2);
       
       printf("prova = %d %d\n", *c, *c2);
    
    }
    Perchè quando imposto in funzione p2 = p, non copia l'indirizzo?

    Questo problema me lo da solo quando cerco di copiare l'indirizzo di un puntatore argomento, in un altro puntatore argomento. Per motivi di utilità, mi serve capire questo passaggio, ed eventuali alternative non mi sarebbe molto di aiuto... dove sbaglio? aiuto...

    Compilo tramite unix su Mac Osx, con il comando "cc", potrebbe essere il compilatore?
    aiuto...

    Grazie infinite!

  2. #2
    codice:
    void funzione(int *p, int *p2){
         p2 = p;
    }
    semplicemente p e p2 sono passate per copia, qundi non puoi modificare il loro valore ma solo il valore da loro puntato... puoi fare per esempio *p1=*p2 o viceversa!!!

    è come se facessi:
    codice:
    void funzione(int a, int b){
         a= b;  //???????????????????
    }
    i valori non vengono scambiati!

    se vuoi scambiare gli oggetti puntati dai puntatori fai:
    codice:
    void funzione(int *&p, int *&p2){ //oggetti passati per riferimento
         p2 = p;
    }

  3. #3
    Utente di HTML.it L'avatar di Neocron
    Registrato dal
    Jul 2002
    Messaggi
    524
    codice:
    void funzione(int *&p, int *&p2){ //oggetti passati per riferimento
         p2 = p;
    }
    Grazie infinite per la risposta!

    il compilatore dice che p2 e p non sono dichiarati e che è la prima volta che compaiono nel codice, proprio nella funzione...

  4. #4
    molto strano... il mio compilatore lo accetta!!
    codice:
    void funzione(int* & p, int* & p2){
         p2 = p;
    }
    in alternativa
    codice:
    //main
    int *p1,*p2;
    funzione2(&p1,&p2);
    
    void funzione2(int **p, int **p2){ //puntatori a puntarori
         *p2 = *p;
    }

  5. #5
    Utente di HTML.it L'avatar di Neocron
    Registrato dal
    Jul 2002
    Messaggi
    524
    Grazie! Proverò presto!

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.