Discussione: [C++]I puntatori

Primo Precedente 2 di 3 Successivo Ultimo
  1. L'avatar di specopsrusca specopsruscaspecopsrusca è offline #16
    20-10-06 17:31

    Citazione miniBill '90
    la & indica un riferimento, in C si potrebbe tradurre con un puntatore const ad un valore non-const
    penso sia quello che intendevo io.. ad es:

    in C++ posso fare:
    int somma (int addendo1, int addendo2, int & risultato)
    {...}

    che, tradotto in C, diventerebbe:
    int somma (int addendo1, int addendo2, int *risultato)
    {...}

    perchè col C, a differenza del C++, non si può passare per riferimento un parametro facendo (in questo esempio): int & risultato; giusto?
    Rispondi con Citazione 

  2. L'avatar di Finalfire FinalfireFinalfire è offline #17
    20-10-06 18:00

    Citazione swisstux
    OK, anche io sono arrivato con il C++ ai puntatori tempo fa ed avevo smesso proprio per colpa loro :-(
    So fare i programmi in modo n00b, utilizzando anche le funzioni e passando le variabili, ma non riesco a mettermi in testa cosa offrono in piu i puntatori :-(

    Diciamo che se qualcuno si prende la briga di spiegarlo in modo _esteso_ (non voglio una bibbia) accontante almeno 2 utenti.

    ciao ciao
    Sul C++ i puntatori servono poco e niente, programmando in OOP.
    Rispondi con Citazione 

  3. java is forever #18
    20-10-06 18:47

    Citazione Finalfire
    Sul C++ i puntatori servono poco e niente, programmando in OOP.
    dipende... quando usavo io il c++ era soprattutto con puntatori (ma forse perche' usavo alcune librerie grafiche nate per c )
    Rispondi con Citazione 

  4. L'avatar di miniBill '90 miniBill '90miniBill '90 è offline #19
    20-10-06 21:14

    Citazione specopsrusca
    penso sia quello che intendevo io.. ad es:

    in C++ posso fare:
    int somma (int addendo1, int addendo2, int & risultato)
    {...}

    che, tradotto in C, diventerebbe:
    int somma (int addendo1, int addendo2, int *risultato)
    {...}

    perchè col C, a differenza del C++, non si può passare per riferimento un parametro facendo (in questo esempio): int & risultato; giusto?
    ci sono due differenze:
    1)col puntatore fai *risultato=val, col riferimento risultato=val
    2)il puntatore può puntare a qualcos'altro anche dopo essere stato creato, il riferimento no
    Rispondi con Citazione 

  5. L'avatar di specopsrusca specopsruscaspecopsrusca è offline #20
    20-10-06 21:38

    Citazione miniBill '90
    ci sono due differenze:
    1)col puntatore fai *risultato=val, col riferimento risultato=val
    2)il puntatore può puntare a qualcos'altro anche dopo essere stato creato, il riferimento no
    ma quello che non ho capito io è se in C si può fare (come in C++) un passaggio di parametro per riferimento, usando &?
    Rispondi con Citazione 

  6. L'avatar di miniBill '90 miniBill '90miniBill '90 è offline #21
    20-10-06 21:47

    no
    Rispondi con Citazione 

  7. L'avatar di Finalfire FinalfireFinalfire è offline #22
    20-10-06 22:44

    Citazione java is forever
    dipende... quando usavo io il c++ era soprattutto con puntatori (ma forse perche' usavo alcune librerie grafiche nate per c )
    Chi usa i puntatori in C++ fa male.
    Perche' C++ = OOP, C = Imperativa.
    Rispondi con Citazione 

  8. java is forever #23
    20-10-06 22:49

    Citazione Finalfire
    Chi usa i puntatori in C++ fa male.
    Perche' C++ = OOP, C = Imperativa.
    non usando piu' il c++ non mi pongo piu' il problema....
    in java non esistono i puntatori!
    Rispondi con Citazione 

  9. L'avatar di Slimmy SlimmySlimmy è offline #24
    20-10-06 23:05

    Citazione Finalfire
    Chi usa i puntatori in C++ fa male.
    Perche' C++ = OOP, C = Imperativa.
    Non è del tutto giusto.

    I riferimenti sono indispensabili per la programmazione OO, ma lo sono altrettando i puntatori.
    Abusare di riferimenti non fa bene, specialmente nei programmi più complessi.

    Voglio vederti a fare il polimorfismo senza puntatori!!
    Rispondi con Citazione 

  10. L'avatar di Slimmy SlimmySlimmy è offline #25
    20-10-06 23:14

    Citazione swisstux
    OK, anche io sono arrivato con il C++ ai puntatori tempo fa ed avevo smesso proprio per colpa loro :-(
    So fare i programmi in modo n00b, utilizzando anche le funzioni e passando le variabili, ma non riesco a mettermi in testa cosa offrono in piu i puntatori :-(

    Diciamo che se qualcuno si prende la briga di spiegarlo in modo _esteso_ (non voglio una bibbia) accontante almeno 2 utenti.

    ciao ciao
    Allora....

    Come penso abbiate capito i puntatori sono indispensabili.
    Un puntatore contiene un indirizzo ad una locazione di memoria.
    Come è la sintassi?

    Codice:
    //dichiarazione di un puntatore ad intero
    int * intptr;
    // dichiarazione di un puntatore a caratter
    char * chptr;
    
    // assegnazione di un indirizzo
    int a=10; //variabile intera
    intptr= & a; // al puntatore assegno l'indirizzo di a;
    cout<<*intptr; //stampo sullo standard output il contenuto della variabile puntata da intptr
    Per quanto riguarda a cosa servono...qualche esempio della loro utilit&#224;.
    1) indispensabili nel passare le variabili alle funzioni se vogliamo che le stesse vengano modificate.
    2) indispensabili per allocare dinamicamente memoria nella heap.
    3) indispensabili per gestire strutture dati pi&#249; complesse dei vettori statici
    Rispondi con Citazione 

  11. swisstux #26
    21-10-06 14:06

    Citazione Slimmy
    1) indispensabili nel passare le variabili alle funzioni se vogliamo che le stesse vengano modificate.
    2) indispensabili per allocare dinamicamente memoria nella heap.
    3) indispensabili per gestire strutture dati più complesse dei vettori statici
    1) OK, questa mi è chiara
    2) così in basso non sono ancora andato, anche se credo che possa servire ad esempio per mettere della memoria da qui a li senza dover copiarla tutta, basta puntarla
    3)interessante...

    grazie, inizio a comprendere.
    ciao ciao
    Rispondi con Citazione 

  12. L'avatar di Slimmy SlimmySlimmy è offline #27
    21-10-06 16:10

    Citazione swisstux
    2) così in basso non sono ancora andato, anche se credo che possa servire ad esempio per mettere della memoria da qui a li senza dover copiarla tutta, basta puntarla

    grazie, inizio a comprendere.
    ciao ciao
    Non pensare sia così in basso....
    Praticamente la heap è la parte di memoria in cui memorizzi oggetti durante il corso del programma...
    Cerco di spiegarmi....

    Se dichiari una variabile:

    int var1;

    Lo spazio di memoria da riservare viene calcolato a tempo di compilazione.
    Inoltre te non devi gestire la sua deallocazione.

    Se invece durante il corso del programma hai bisogno di più memoria (hai bisogno di un vettore più grande come esempio più semplice, oppure vuoi far definire le dimensioni del vettore all'utente...) puoi richiederla e verrà riservato dello spazio nella heap.
    La differenza con le altre variabili è che devi essere te personalmente a rilasciare la memoria per quella variabile.....

    es:

    int size;
    int *vett;

    cin>>size;
    vett=new int [size];




    Questi sono le cose più semplici che puoi farci...


    Un altro esempio che mi viene in mente è questo:

    Supponiamo che hai un array statico di 100 elementi.
    Questo array non contiene interi ma oggetti molto più complicati e pesanti. (classi o strutture... cioè raggruppamenti di dati con metodi a loro associati..).
    Se l'array fosse di oggetti avresti uno spreco enorme di memoria quando magari utilizzi solo i primi 2 campi dell'array.

    Se invece di un array di oggetti, crei un array di puntatori ad oggetti, risparmierai tantissimo spazio, perchè darai l'indirizzo ai puntatori solo quando creerai effettivamente l'oggetto...
    Rispondi con Citazione 

  13. swisstux #28
    21-10-06 22:03

    Ok, questo della heap la st&#242; leggendo in questi giorni nel libro "l'arte dell'hacking". In ogni caso, una domanda, quanto in basso &#232; possibile andare a 16 anni? Cio&#233;, ho guardato un giorno l'assembly e mi &#232; sembrato che mi servissero moltissime nozioni. Confido nell'Universit&#224; ;-)
    Rispondi con Citazione 

  14. L'avatar di Slimmy SlimmySlimmy è offline #29
    21-10-06 22:16

    Non ne ho la pi&#249; pallida idea.
    Non ho mai usato l'assembly.. Il C mi va pi&#249; che bene..
    Rispondi con Citazione 

  15. L'avatar di sydarex sydarexsydarex è offline #30
    21-10-06 22:25

    Citazione swisstux
    Ok, questo della heap la stò leggendo in questi giorni nel libro "l'arte dell'hacking". In ogni caso, una domanda, quanto in basso è possibile andare a 16 anni? Cioé, ho guardato un giorno l'assembly e mi è sembrato che mi servissero moltissime nozioni. Confido nell'Università ;-)
    Mi ci sono avvicinato a 14.
    Rispondi con Citazione 

 
Primo Precedente 2 di 3 Successivo Ultimo