Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

puntatori

Linguaggi e sistemi

Moderatori: Foto UtentePaolino, Foto UtenteMassimoB, Foto Utentefairyvilje

0
voti

[1] puntatori

Messaggioda Foto Utentepiero70 » 15 gen 2009, 23:44

sapreste darmi indicazioni (possibilmente in modo semplice data la mia poca esperienza nel campo) inerenti i puntatori nel linguaggio C?
Grazie mille.
Avatar utente
Foto Utentepiero70
5 1 5
Frequentatore
Frequentatore
 
Messaggi: 189
Iscritto il: 6 lug 2008, 17:44

0
voti

[2] Re: puntatori

Messaggioda Foto UtenteJon TopGArn » 16 gen 2009, 0:06

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
Top GArn MASVST... stay heavy and play loud!
Avatar utente
Foto UtenteJon TopGArn
0 1 4
Frequentatore
Frequentatore
 
Messaggi: 101
Iscritto il: 23 mar 2007, 11:12
Località: Brescia - Napoli

1
voti

[3] Re: puntatori

Messaggioda Foto UtenteWed_17 » 16 gen 2009, 0:44

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.
Ci sono 10 tipi di persone: quelle che conoscono il sistema binario e quelle che lo ignorano.
...We are Motörhead, and we play rock 'n' roll...
Avatar utente
Foto UtenteWed_17
255 3 9
Expert
Expert
 
Messaggi: 363
Iscritto il: 4 dic 2008, 20:19

0
voti

[4] Re: puntatori

Messaggioda Foto UtenteJon TopGArn » 16 gen 2009, 18:52

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
Top GArn MASVST... stay heavy and play loud!
Avatar utente
Foto UtenteJon TopGArn
0 1 4
Frequentatore
Frequentatore
 
Messaggi: 101
Iscritto il: 23 mar 2007, 11:12
Località: Brescia - Napoli

0
voti

[5] Re: puntatori

Messaggioda Foto Utentepiero70 » 16 gen 2009, 21:39

Grazie dei Vostri interventi, sono stati molto utili ad aiutarmi a capire. =D>
Avatar utente
Foto Utentepiero70
5 1 5
Frequentatore
Frequentatore
 
Messaggi: 189
Iscritto il: 6 lug 2008, 17:44

0
voti

[6] Re: puntatori

Messaggioda Foto UtenteWed_17 » 16 gen 2009, 21:44

trovi molte guide utili con programmini semplici per iniziare a capire come funzionano :mrgreen:
Ci sono 10 tipi di persone: quelle che conoscono il sistema binario e quelle che lo ignorano.
...We are Motörhead, and we play rock 'n' roll...
Avatar utente
Foto UtenteWed_17
255 3 9
Expert
Expert
 
Messaggi: 363
Iscritto il: 4 dic 2008, 20:19


Torna a PC e informatica

Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti