Osoittimet ovat tehokkaita C- ja C ++ -ohjelmoinnin ominaisuuksia. Ennen kuin opimme osoittimia, oppikaa oppimaan C-ohjelmoinnin osoitteista.
Osoite C: ssä
Jos ohjelmassasi on muuttuja var, &var
antaa osoitteen muistiin.
Olemme käyttäneet osoitetta useita kertoja käyttäessämme scanf()
-toimintoa.
Täällä käyttäjän syöttämä arvo tallennetaan muuttujan muuttujan osoitteeseen. Otetaan toimiva esimerkki.
Tulos
var: 5 address of var: 2686778
Huomaa: Saat todennäköisesti toisen osoitteen, kun suoritat yllä olevan koodin.
C Osoittimet
Osoittimet (osoitinmuuttujat) ovat erityisiä muuttujia, joita käytetään osoitteiden eikä arvojen tallentamiseen.
Osoittimen syntakse
Näin voimme ilmoittaa osoittimet.
Tässä on ilmoitettu osoitin p, jonka tyyppi on int
.
Sinä voi myös ilmoittaa osoittimet näillä tavoilla.
Otetaan toinen esimerkki osoittimien ilmoittamisesta.
Tässä olemme ilmoittaneet osoittimen p1 ja normaalin muuttujan p2.
Osoitteiden osoittaminen osoittimille
Otetaan esimerkit.
Tässä 5 osoitetaan muuttujalle c. Ja c: n osoite osoitetaan pc-osoittimelle.
Hanki osoittimien osoittaman asian arvo
Saadaksesi osoittimien osoittaman asian arvon käytämme *
-operaattori. Esimerkki:
Täällä c
osoitetaan PC-osoittimelle. Saadaksesi kyseiseen osoitteeseen tallennetun arvon käytimme * pc: tä.
Huomaa: Yllä olevassa esimerkissä pc on osoitin, ei *pc
. *pc = &c
;
Muuten *
kutsutaan poikkeamaoperaattoriksi ( kun työskentelet osoittimien kanssa). Se toimii osoittimella ja antaa kyseiseen osoittimeen tallennetun arvon.
Osoittimien osoittaman arvon muuttaminen
Otetaan esimerkki.
Olemme osoittaneet c: n osoitteen pc-osoittimeen.
Sitten muutimme c: n arvon arvoksi 1. Koska pc ja c: n osoite on sama, *pc
antaa meille 1.
Otetaan toinen esimerkki.
Olemme määrittäneet c-osoitteen pc-osoittimeen.
Sitten muutimme *pc
arvoksi 1 käyttämällä *pc = 1;
. Koska pc ja c: n osoite ovat samat, c on yhtä suuri kuin 1.
Otetaan vielä yksi esimerkki.
Aluksi c: n osoite osoitetaan pc-osoittimelle pc = &c;
avulla. Koska c on 5, *pc
antaa meille 5.
Sitten osoitetaan d: n osoite pc-osoittimeen käyttämällä pc = &d;
. Koska d on -15, *pc
antaa meille -15 .
Esimerkki: Osoittimien työskentely
Otetaan toimiva esimerkki.
Tulos
Address of c: 2686784Value of c: 22Address of pointer pc: 2686784Content of pointer pc: 22Address of pointer pc: 2686784Content of pointer pc: 11Address of c: 2686784Value of c: 2
Ohjelman selitys
-
int* pc, c;
Täältä , osoitin-pc ja normaali muuttuja c, molemmat tyyppiäint
, luodaan.
Koska pc: tä ja c: tä ei alusteta alussa, osoitin-PC osoittaa joko ei osoitetta tai satunnainen osoite. Ja muuttujalla c on osoite, mutta se sisältää satunnaisen roska-arvon. -
c = 22;
Tämä määrittää 22 muuttujalle c. Toisin sanoen 22 on tallennettu muuttujan c muistipaikkaan. -
pc = &c;
Tämä määrittää muuttujan c osoitteen osoitin-pc: lle. -
c = 11;
Tämä antaa 11 muuttujalle c. -
*pc = 2;
Tämä muuttaa osoitinkortin osoittaman muistipaikan arvon arvoksi 2.
Yleisiä virheitä osoitinten kanssa työskenneltäessä
Oletetaan, että haluat osoittimen osoittamaan c-osoitetta. Sitten
Tässä esimerkki osoittimien syntaksin aloittelijoista on usein hämmentävää.
Miksi ei löydy virhettä, käytät int *p = &c;
?
Se johtuu siitä, että
vastaa
Molemmissa tapauksissa luomme osoittimen p
(ei *p
) ja määritetään sille &c
.
Tämän sekaannuksen välttämiseksi voimme käyttää lausetta näin:
Nyt tiedät mitä osoittimet ovat, opit kuinka osoittimet liittyvät seuraavan opetusohjelman matriiseihin.