sapreste darmi indicazioni (possibilmente in modo semplice data la mia poca esperienza nel campo) inerenti i puntatori nel linguaggio C?
Grazie mille.
puntatori
Moderatori:
Paolino,
fairyvilje
6 messaggi
• Pagina 1 di 1
0
voti
[2] Re: puntatori
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
è 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!
-

Jon TopGArn
0 1 4 - Frequentatore

- Messaggi: 101
- Iscritto il: 23 mar 2007, 11:12
- Località: Brescia - Napoli
1
voti
[3] Re: puntatori
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.
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...
...We are Motörhead, and we play rock 'n' roll...
0
voti
[4] Re: puntatori
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
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!
-

Jon TopGArn
0 1 4 - Frequentatore

- Messaggi: 101
- Iscritto il: 23 mar 2007, 11:12
- Località: Brescia - Napoli
0
voti
[6] Re: puntatori
trovi molte guide utili con programmini semplici per iniziare a capire come funzionano 
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...
...We are Motörhead, and we play rock 'n' roll...
6 messaggi
• Pagina 1 di 1
Chi c’è in linea
Visitano il forum: Nessuno e 15 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)


