Pagina 1 di 1
puntatori

Inviato:
15 gen 2009, 23:44
da piero70
sapreste darmi indicazioni (possibilmente in modo semplice data la mia poca esperienza nel campo) inerenti i puntatori nel linguaggio C?
Grazie mille.
Re: puntatori

Inviato:
16 gen 2009, 0:06
da Jon TopGArn
Ciao,
è da un po' che non programmo quindi ti darò una risp molto semplice su quello che mi ricordo.
In C sai che hai 3 modi per scambiare i dati tra, ad es, il main e una function o tra due function. Questi 3 modi sono:
1. nome (il più semplice, ma ha la scomodità che devi chiamare le var nello stesso modo nel main e nella function)
2. valore (migliore poiché nn c'è il vincolo del nome, però per lavorare crea un'area di memoria dedicata allo scambio di valori e quindi raddoppia lo spazio utilizzato perché per ogni variabile ne crea una gemella per fare lo swap (lo scambio))
3. indirizzo (migliore in assoluto, ma un po' difficile da approciare a causa dei puntatori)
Quindi almeno lo scopo dei puntatori ora è chiaro: accedere (leggere/scrivere) dati senza maneggiare essi stessi ma maneggiandone il loro indirizzo di memoria.
Ciò si fa dichiarando una variabile di tipo puntatore ed i valori che essa assumerà nel corso dello svolgimento del programma non sono i valori delle variabili, ma i valori dei loro indirizzi.
Se ha esempio il numero reale "1.34" è salvato nella variabile "x" all'indirizzo 12500 e "p" è la variabile puntatore che punta ad x, il suo valore è proprio 12500.
Poi la sintassi precisa di assegnazione della variabile ecc ecc non me la ricordo, scusa l'imprecisione. (comunque ci sn 1 miliardo di guide C e C++ in rete)
Inoltre mi ricordo che un'altra caratteristica comoda dei puntatori è che con la sintassi freccia "->" ti permettono di scorrere i vari membri di una classe/structure, quindi se ad esempio ha un database a cui ad ogni nome è associato un voto e vuoi trovare il max/min o robe del genere con sta sintassi del puntatore ti scorri tutto l'elenco comparando a due a due il voto successivo e precedente per trovare il maggiore.
Mi ricordo che esiste pure il puntatore a puntatore... solo che già è difficile quello semplice, inoltre non l'ho mai usato e ho ricordi solo vaghi come hai potuto vedere dall'approssimatività delle miei spiegazioni, quindi niente.
Ciao ciao
Re: puntatori

Inviato:
16 gen 2009, 0:44
da Wed_17
Aggiungo solo una cosa che magari può aiutare a capire a cosa servano: qunado nel c chiami una funzione, essa può resistuire niente, oppure un valore. Ma se io ad esempio volessi chiamare una funzione che dovrebbe modificare il valore a due variabili, come faccio se la funzione può resistuire solo un valore?? Ecco che entrano in gioco i puntatori: passando l'indirizzo della variabile alla funzione posso modificare la variabile stessa tramite i puntatori, risolvendo così il problema.
Se ad esempio volessi chimare la funzione incrementa, che incrementa di 1 la variabile x inizializzata precedentemente, e di 2 y, è possibile scrivere nel main una cosa del genere:
int main()
{ ...
x=0;
y=0;
incrementa(&x,&y);
printf("x=%d, y=%d",x,y);
....
}
void incrmenta(int *a, int *b)
{ *a=*a+1;
*b=*b+2;
}
il programma stamperà x=1, y=2.
Re: puntatori

Inviato:
16 gen 2009, 18:52
da Jon TopGArn
Si ecci hai fatto bene a mettere un po' di sintassi perché quello è il modo più immediato per capire, purtroppo ero un po' arrugginito.
Infatti consiglio finale per il ragazzo che faceva la domanda: prenditi qualche programmino banale coi puntatori (possibilmente programmino che sia commentato cioè che abbia gli "\* bla bla bla" che ti commentano le linee di codice) e snocciolalo per bene e capisci subito.
C'è un bel sito che si chiama
http://www.UtenteCancellatotofy.it in cui si possono scaricare molti cod sorgenti da studiare.
Ciao
Re: puntatori

Inviato:
16 gen 2009, 21:39
da piero70
Grazie dei Vostri interventi, sono stati molto utili ad aiutarmi a capire.

Re: puntatori

Inviato:
16 gen 2009, 21:44
da Wed_17
trovi molte guide utili con programmini semplici per iniziare a capire come funzionano
