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;
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 |
muistinhallinta
By Olli Savolainen
muistinhallinta
- 2,479