Sambanburur bendum og tilvsunum
Tlvunarfri 2, vor 2005



Skilgreiningar

A ba til benda:
    <TAG> *<bendanafn>;
Hr getur <TAG> veri tag eins og int, float, ea notendaskilgreindur klasi. Dmi:
    int *p;
    CAT *t;

A ba til tilvsanir:

    <TAG> &<tilvsun> = <breytunafn>;
Hr getur <TAG> veri eins og a ofan. <breytunafn> er skilgreind breyta af sama tagi. Dmi:
    int &magn = fjoldi;
N er magn anna nafn breytunni fjoldi. a er hgt a nota bi nfnin jfnum hndum.

Notkun

Eftir a tilvsanir hafa veri skilgreindar eru r bara notaar sem anna nafn breytunni sem r voru festar .

Tveir virkjar (e. operators) sem tengjast bendum. Til a f a sem bendar benda er notaur virkinn "*". Dmi:

    float *p;		// p er bendir  float
    p = new float;	// p lti benda  ntt nefnt float-hlf
    *p = 2.5;		// a sem p bendir  (.e. nefnda hlfi)
    			//  er lti f gildi 2.5
Hgt er a f vistfng allra breyta me virkjanum "&". Allar breytur eru geymdar minni og hafa v vistfng. Getum sett essi vistfng bendabreytur:
    int i;		// i er heiltlubreyta
    int *p = &i;	// p er heiltlubendir og er ltinn benda  i
    			//  .e. vistfangi  i er sett  p
Athugi a bendar eru breytur lka og hafa v vistfng eins og arar breytur. Gtum skilgreint "benda benda int". etta eru bendar sem benda bara "benda int" (ea int *). Dmi:
    int i;
    int *p = &i;
    int **q = &p;	// q er bendir  heiltlubenda og er ltinn benda  p
    
    i = 5;		//
    *p = 5;		// essar rjr setningar eru allar jafngildar
    **q = 5;		//
Athugi a vegna ess a tilvsanir eru bara anna nafn breytu hafa bi nfnin sama vistfang. Dmi:
    int fjoldi;
    int &magn = fjoldi;	// magn er anna nafn  fjoldi
    int *p;
    
    p = &fjoldi;	//
    p = &magn;		// essar tvr setningar eru alveg jafngildar
Prfi a sl inn dmi hr a ofan og prenta san t &fjoldi og &magn. tti a koma t sama vistfangi.

Nokkur dmi

Segjum a p s bendir int (.e. skilgreindur me: "int *p;"). Skoum merkingar nokkurra setninga:
    *p = a;		// a sem p bendir  er sett sem gildi  a
    			//  a verur a vera af sama tagi og a sem p bendir , ea int
    			//  gerum lka r fyrir v a p bendi  minnishlf sem vi megum breyta
    
    *p = &a;		// a sem p bendir  er sett sem vistfangi  a
    			//  ar sem p er bendir  int og &a er vistfang  gengur
    			//  etta ekki (.e. vistfang  heiltluhlf)
    
    p = &a;		// p fr vistfangi  a
    			//   verur a a vera int-breyta, v p getur bara bent 
    			//  heiltluhlf
    
    p = a;		// p fr gildi  a
    			//   verur a a vera heiltlubendir lka (.e. skilgreint
    			//  me "int *a;"

hh (hja) hi.is, janar, 2005.