lezionepuntstruct.pdf
TRANSCRIPT
-
Lezione8Puntatorieriferimentiestrutture
-
Variabili
Ognivariabilehaunrvaloreedunlvalore
Rvalore=10Lvalore:indirizzodimemoria
-
Puntatori
int*e'untipopuntatoreadintero int*p
dichiarachelavariabilepe'destinataapuntareadunqualcheidentificatoreintero
Perilmomentope'indefinito(cosi'comedopoladichiarazioneintx;abbiamoxindefinito)
-
RAM 10 2342 10
x p y
Lvaloredix=2342
-
Dichiarazionedipuntatori
h
h
c
p
w
Dichiariamopditipochar* E'comescrivere
charw='h'
wvieneinizializzataconilvalore'h'
-
Cosastampa?Indirizzodixinesadecimale
Dereferenziarep:e'comeaverex
-
Dereferenziareunpuntatore=
Ottenerel'oggettopuntato
ATTENZIONE
STAMPA9.28
-
Erroricomuni
Erroreincompilazione
Errorelogico
-
Dichiarazionedipuntatori
L'istruzioneint*p;inizializzaunpuntatorediRvaloreindefinito.Comedistinguerlodaunindirizzobuono? BUONAPRATICA:int*p=0;
if(p){//faiqualcosaconp
}else{//inizializzap
}
-
Errorifrequenti
intx,*p=x//xe'intenonint* intx,*p=&x;float*f=p;//ERROREDITIPO//int*assegnatoafloat*
int*p,*p=6//pe'indefinito//nonpuntaaniente
-
Puntatoriapuntatori
RAM 10
q p pp
-
Seorafacciamo*pp=&q
RAM 10
q p pp
Eseavessimofattop=&q??
cout
-
Conlunghecatenedipuntatorie'faciledimenticarediinizializzarequalchelivello
Dereferenziareunpuntatoreindefinitoe'erroregrave
Chediredi???
-
Osservazioni
Ilsimbolo*haduesignificatidiversi Ilcontestoincuiappare*indicadichecosasitratta char*p;//dichiarazionedipuntatoreachar *x=.;
.=.*x..;//dereferenziazione
-
Riferimenti
Iriferimenticipermettonodicrearealiasdivariabili
ye'unaliasdixcioe'halostessoLvaloreedRvaloredix
IriferimentinonesistonoinCsonostatiintrodottiperfacilitareilpassaggiodiparametriallefunzioni(vedremopiu'avanti)
-
Comevienerealizzatounalias? Conunpuntatore Inrealta&y=x;definisceunpuntatoreint*z=&x;eognivoltachescriviamoynelprogramma,ilcompilatorelotraducein*z.
TecnicausatainJavadovetuttiipuntatorisononascostidariferimenti
-
Regoledeiriferimenti
Vannoinizializzatisubitoall'attodelladichiarazione intx,&y;//NONVAy=x;
intx;..int&y=x;//OK
Nonsipossonodefinirepuntatoriariferimenti
-
Cosastampa???
-
Lestrutture
UnastrutturaCe'unacollezionedivariabilidiunoopiu'tipiraggruppatesottounnomecomune
Dichiarazionediunastruttura
Ladichiarazionediunastrutturadefinisceuntipo
-
Lestrutture
Dichiarazionediunavariabileditipostructpoint
Dichiarazioneedinizializzazionediunavariabileditipostructpoint
-
Accessoallecomponentiepuntatoriastrutture
Allecomponentiomembridellastrutturasiaccedeattraversol'operatore.
Dichiarazionediunpuntatoreastruttura
L'accessoallecomponentidellastrutturapuntatadappavvienemediantel'operatore>
-
Arraydistrutture
Ladichiarazione
dichiarauntipostrutturakey,definisceunvettorekeytabdistrutturediquestotipoeriservamemoriapertalistrutture
Avremmopotutoscrivere
Ognielementodikeytabe'unastrutturastructkey:quindipossiamoaccedereallecomponentidiquest'ultimaconkeytab[i].wordekeytab[i].count
Slide 1Slide 2Slide 3Slide 4Slide 5Slide 6Slide 7Slide 8Slide 9Slide 10Slide 11Slide 12Slide 13Slide 14Slide 15Slide 16Slide 17Slide 18Slide 19Slide 20Slide 21Slide 22