Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [C]Mi spiegate i puntatori ed i passagi per riferimento delle var??

    Ciao belli...premettendo che come teoria su puntatori e variabili passate per riferimento sono ok, mi servirebbe qualcuno che mi spiegasse in tutta calma l'utilità pratica di usare puntatori ed altro...le variabili, non sono già da se "puntatori" ad una locazione di memoria contenente dei valori??Per ora l'unica utilità pratica che ho notato nelle particolarità del C è quella delle variabili REGISTER...

    vabbò, spiegatemi!

    HASTA!
    eXtending-Php.net coming soon ...

  2. #2
    Utente di HTML.it L'avatar di wolf64
    Registrato dal
    Jul 2001
    Messaggi
    521
    Beh, forse non sono il più adatto in quanto ancora molto newbie sul C (nonostante l'età!!! :adhone: ), però, mentre aspetti che qualcuno di più "autorevole" ti risponda ti pongo un quesito, come faresti a far ritornare più valori da una funzione o se devono tornarti i valori di un intero array? Ma con i puntatori ovviamente, questa è già una cosa non da poco
    Ti faccio un esempio facile facile con una piccola funzione per scambiare due valori di un array:

    void scambio(int *a, int *b) {

    int temp;

    temp = *a;
    *a = *b;
    *b = temp;

    return;
    }

    Questo è un caso di un semplicissimo algoritmo che potresti sviluppare direttamente dentro la stessa funzione a cui occorre senza disturbare i puntatori, però pensa a come avresti fatto ad avere di ritorno i due valori di "a" e "b" senza puntatori e quanto questo ti sia utile in casi di funzioni più complesse.
    Ciao
    Gigi

    PS: visto la mia breve esperienza, se dovessi aver detto qualche castronata sono ben gradite critiche correttive
    Powered by Slack Current - Kernel 2.6.22
    Slackware Evangelist
    My LUG (Linux User Group): LinuxVar (LUG di Varese)

  3. #3
    Utente di HTML.it L'avatar di JamesD
    Registrato dal
    Oct 2001
    Messaggi
    415
    Non che sia una cima in materia....

    Grazie ai puntatori puoi allocare della memoria dinamicamente cosa che con variabili normali non potresti fare, cioè le variabili puntano ad una zona di memoria ben precisa che rimane invariata fino alla fine dell'esecuzione del programma, coi puntatori puoi allocare e liberare diverse zone di memoria con la stessa 'variabile' durente l'esecuzione. Per esempio se devi usare un array per contenere dei valori, ma non sai quanti valori deve contenere lo puoi creare grazie ai puntatori. Poi ci sono le varie strutture di memorizzazione dinamica come liste, alberi, grafi anch'esse realizzate grazie ai puntatori.

    Spero di avere detto solo c@##ate e di essere stato chiaro :gren:

    Ciaoz

  4. #4
    I puntatori sono utili soprattutto in funzione del fatto che possiedono un aritmetica particolare, e che permettono l'accesso indiretto ad una variabile.

    Esempio stolto: se una funzione deve prendere come parametro una struct con 120 campi, passando un puntatore a tale struttura evito di copiare nello stack i valori di 120 campi, riducendo il tempo di esecuzione.

  5. #5
    Ma quando devo decidere se passare puntatori oppure le varibili o magari il riferimento??
    eXtending-Php.net coming soon ...

  6. #6
    Utente di HTML.it L'avatar di JamesD
    Registrato dal
    Oct 2001
    Messaggi
    415
    Quando usare i puntatori te la già detto Andrea!

    Se usare il passaggio per valore o per riferimento riferimento lo decidi tu in base alle esigenze del tuo programma. Per valore gli passi una copia della variabile, che avrà una durata pari alla durata della funzione che richiami, mentre per riferimento gli passi l'indirizzo della variabile, e quindi andrai a fare le tue operazioni direttamente sulla varibile di origine e perderai il valore che conteneva precedentemente (ovviamente solo se la modifichi).

    So già che non mi sono spiegato ma per me l'italiano è un optional!

    Ciaoz

  7. #7
    I riferimenti (&) si trovano solo in C++.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.