LezionePuntStruct.pdf

22
 Lezione 8 Puntatori e riferimenti e strutture Mauro Piccolo [email protected]

Transcript of LezionePuntStruct.pdf

  • Lezione8Puntatorieriferimentiestrutture

    [email protected]

  • 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