Puntatori
Puntatori: alle variabili. Fino ad ora, per accedere al loro valore, abbiamo usato sempre il nome. Ogni variabile può essere identificata anche dall’indirizzo memoria, ovvero un numero binario che localizza nella memoria la variabile: ¥÷{ G): dice alla variabile sinonimi vari puntap indirizzi indirizzo 100010lop memoria variabile di indirizzo. Dobbiamo usare una variabile puntatore, ovvero una variabile che contiene un indirizzo di memoria.
Dichiarazione di una variabile puntatore
Dichiarazione di una variabile puntatore: *tipo nome;
p è dell’tipo che nella cella è indirizzo di memoria cui variabile nella nome. Es.: *II tipo vari dichiaro di ad puntatore int punt variabile intero; una; 3 vari; =.
Inizializzazione: & varipunt; = ↳ indirizzo di operatore commerciale e, posso usare la variabile puntatore per accedere al contenuto di vari. Per farlo devo eseguire operazioni di depenalizzazione, *dereflrenze. am auto cono. ,* punt 77 vari >; ⇐ ==- indirizzo accedi inserisci punt di 7 alla memoria cella ovvero con e.
Esempio con puntatore
# -. i.EE- vent{1) main int ÷2 int mare non;,* punt int; punt & 2 non; = "d" )%( &scanf Vanz; ,"Tod )"( puntswang; , ."" d( )% printf non 2; ," *" )Yod(printf punt; ,( " " ) ciò punt stampato pprintf; →, punt dentro è che c'22 non novan; = -* *punt 5punt +; =
Regole per il puntatore
Puntatore: *tipo dichiarato puntato nome;
- & inizializzato vonpunt; con
- = * 5puntidlflreuiziaziane devo fare accedere al contenuto; esper
- Solitamente inizializza NULL variabile dichiara puntatore il quando poi si modifica per a una, valore quando serve.
Scambio di valori
vaid (scambia) int int b; a }, •} scambia)(int main b; lscambia)(; × y,i ' }i ✗ main return 0;} 7 record avveniva main scambio lo Non nel. Per il problema puntatori risolvere questo si usano.
listadio include# >c. # )#(void int b scambia int a;,{main () int int; × y, "d" );&d &% To yscones ( × i,, x" temp"" )dYodprintf ( % ×; y scambia, , ind by( )scambia 84; & ×, ind i a" " )TodTod(printf × y;,, 4755 main return 0;} 7458}# b)*Void scambia ( intaint, 7455 VIDEO temp int; 5574 *temp a; = ** ba; =* b temp; =}
Restituire più valori
Di main indirettamente variabili puntatore valore restituire usando anche più al possiamo un se. ,, ** )tipo (restituito tipo elfunzione tipo al nome; _. , l' contenuto modificare Nel della della di il di memoria devo cella funzione operazione corpo usare per, ,* )(derefeenziazione. (di chiamate) di l' indirizzo l' indirizzo. Nelle variabile & operatore una passare per uso. , ,?
Problema: minimo e massimo
⃝ Problema restituisce parametri riceve che due il minimo il numeri sottoprogramma interi massimo come e e. lico l sottoprogramma Scrivere calcola interi poi acquisisce minimo programma che 2 massimo un e e, stampa.
stdio.li include# < > **Void ( )int int b int minintmaximin Maxa;,,,} int ( )main int mi ma; × y, ,, " )"d d%( 84ex%scones; , ,( )min &✗ Mxm a × & Mny; ,, ,)"Yod"printf ( Lux; ," );d"(printf to nun, return 0;} [ minino}) une☒# int'Void int( mÈ•§bmaximin intiuta uiumax,, , """ " " """"" " " 15* naaa; 2* bmin; =} 2main yg uex{elsa 15 y* bMax; =* mia a; =}}
Variazione valore col return
Variazione valore col return potevo con un puntatore passare: e un un}"(Maximin int bint )int inta max, ,{b)(if a >* Q massimo; il puntatore Max passo un = con →, mentre b minimo il col return lo return; passo} }elsa * bMax; =return a; '}
Nel main: ( )bMaximin & Mxoe; mie = ,, di informazioni passaggio CHIAMANTE CHIAMATO -ù de retour puntatori che interi sottoprogramma Scriviamo restituisca quoziente due resto un e e. quoziente il acquisisce due sottoprogramma che Scriviamo calcola usando interi resto e e programma un, stampa va
-
Programmazione - Spiegazione C++, Puntatori e liste, Java (base)
-
Appunti di Fondamenti di informatica sui puntatori
-
Programmazione in C++ : Programmi sulla costruzione di liste collegate (e puntatori)
-
Test uso puntatori a strutture