muistinhallinta & *


muistin

hallinta

muuttujat


int luku=23;


  • 0001: 23
  • 0002: 0000
  • 0003: 0000
  • 0004: 0000


muuttujan osoitteen saaminen

& tarkoittaa: 'address of '

int luku=23;

&luku; // arvo on 0001


  • 0001: 23
  • 0002: 0000
  • 0003: 0000
  • 0004:  0000

osoitteita voi tallentaa osoittimiin

int luku=23;
&luku; // address of luku, eli arvo on 0001

int* osoitin = &luku; // luodaan osoitin, arvo on 0001



  • 0001: 23
  • 0002: 0001
  • 0003: 0000
  • 0004:  0000

*:n toinen käyttötarkoitus:
osoittimista sisältö ulos

int luku=23;
&luku; // 0001

int* osoitin = &luku; // luodaan osoitin, arvo on 0001
int lukuB = *osoitin; // lukuB arvo 23, *:n merkitys eri kuin yllä!

  • 0001: 23
  • 0002: 0001
  • 0003: 23
  • 0004:  0000

toinen esimerkki

myvar = 25;
foo = &myvar;
bar = myvar;
int myvar2 = *foo;
http://www.cplusplus.com/doc/tutorial/pointers/


char merkki ='a';
merkki; // muuttujan sisältö
&merkki; // muuttujan osoite

char merkkijono[20]="moi  maailma";
merkkijono; // muuttujan osoite
*merkkijono // muuttujan sisältö
merkkijono[0] // muuttujan sisältö


char *merkkijono;



scanf("%s", &muuttuja);


printf("%s", muuttuja);

kaksi merkitystä sekä &:llä että *:llä

int i= *osoitin; int *j  = &muuttuja; &muuttuja;   int summa(int &muuttuja)
 hae osoitin-muuttujan takana oleva arvo
(ja tallenna se i:hin
hae muuttuja:n osoite
(ja tallenna se osoitinmuuttuja j:hin)
hae muuttuja:n osoite
funktio, joka ottaa parametrikseen viitteen muuttujaan
Made with Slides.com