Sissejuhatus kursoritesse C
C-keeles või teistes programmeerimiskeeltes on meil mõiste muutuja. Neid muutujaid kasutatakse selles väärtuste hoidmiseks. Neid muutujaid saab programmeerimisel kasutada. Siiski on vähe ülesandeid, mis ei vaja muutujaid, vaid nõuavad nende muutujate aadressi. Muutujate aadress tähendab mälu asukohta, kus need muutujad on olemas. Selles teemas õpime tundma kursoriga C. Saame määratleda osuti muutuja tüübina, mis hoiab kõigi muude muutujate aadresse, millel võib olla mõni väärtus
Näpunäidete kasutamine keelte programmeerimisel ja C
Arutlegem nüüd selle üle, kus C kas meil on tegelikult kursorit vaja. On palju ülesandeid, näiteks dünaamilise mälu eraldamine, mis nõuab C-programmeerimisel osutit. Viitade abil saab sellist ülesannet hõlpsalt teha
Erinevad muutuvale aadressile juurdepääsu võimalused C-vormingus
Proovime teada saada, mismoodi saab muutuja aadressi C-s trükkida.
Muutuja aadressi saab tegelikult printida kahel viisil. Need kaks meetodit on:
- Kasutades ampersand (&) meetodit
- Kasutades kursorit
Vaatame iga meetodit näitega
1. Kasutades ampersand (&) meetodit
Selle meetodi puhul kasutame muutuja aadressi printimiseks ampersandi mõistet
Vaatame seda näitega
#include
int main () (
double varNumValue= 10.2;
char varTextValue(10) = “abc”;
printf("The address of variable varNumValue: %x\n", &varNumValue );
printf("varTextValue variable address is : %x\n", &varTextValue );
return 0;
)
Nüüd kopeerige ülaltoodud koodilõik ja käivitage see
See näitab järgmist väljundit:
The address of variable varNumValue: a0665a48
The address of variable varTextValue is : a0665a3e
Ehkki näite kuvamise ajal võib näha erinevat väärtust, mis määratakse juhuslikult
Ülalnimetatud näidet ei kasutata kuigi palju, kuid see on seda väärt teada. Vaadakem nüüd muud mõistet, mida selles teemas arutame.
2. Osuti abil
See on kaasaegne lähenemisviis muutuja aadressile juurdepääsuks. Enne osuti kasutamist andke meile teada osuti kuulutamise üldine süntaks
- Osuti deklareerimise üldine süntaks - tavaline süntaks, mida me kasutame muutuja deklareerimisel, on:
data_type *variable
See on tavaline viis kõigi C osuti deklareerimiseks, siin tähistab data_type selle muutuja tüüpi, mille aadressi tuleb salvestada. * tähistab, et deklareeritud muutuja on osuti. muutujat kasutatakse lihtsalt väärtuse saamiseks
Selle lihtne näide on:
double *var_text
Pärast osuti deklareerimise üldise süntaksi kontseptsiooni arutamist andke meile teada, kuidas saame kursorit programmeerimisel kasutada
C-osuti kasutamiseks peate põhimõtteliselt järgima kolme järgmist sammu:
- Osuti muutuja määratlemine
- Muutuja aadressi määramine, mille aadressi kursorimuuturisse tahame hoida
- Nüüd, kui meil on osutiga muutuja koos aadressiga, saame muutuja väärtuse jälle kursori talletatud aadressilt otsida. Seda saab teha, kasutades * C-s. * On lihtsalt üks ühemõtteline operaator
Kasutagem ülaltoodud samme näitega ja siis selgitame seda näidet samm-sammult
Näide
#include
int main () (
int varNumValue = 10;
int *ipointervarNumValue;
ipointervarNumValue = &varNumValue;
printf("Address of the variable varNumValue is: %x\n", &varNumValue );
printf("Address stored in the variable ipointervarNumValue is: %x\n", ipointervarNumValue);
printf("Value of the variable *ipointervarNumValue is: %d\n", *ipointervarNumValue );
return 0;
)
Nüüd kopeerige ülaltoodud koodilõik ja käivitage see
See näitab järgmist väljundit:
Address of the variable varNumValue is: bf7b7f94
Address stored in the variable ipointervarNumValue is: bf7b7f94
Value of the variable *ipointervarNumValue is: 10
Proovime nüüd ülaltoodud näitest aru saada
Rida int varNumValue = 10; lihtsalt deklareerib muutuja väärtusega 10
Teine rida, mis asub selle kõrval: int * ipointervarNumValue; deklareeritakse lihtsalt muutuja aadressi salvestamiseks
Järgmine koodilõik, mis on: ipointervarNumValue = & varNumValue; kasutatakse muutuja aadressi hoidmiseks. Siin kasutame ampersandi mõistet, millest me artiklis varem arutlesime
Nüüd saame lihtsalt väärtuse ja saame oma koodilõikes osuti kasutada
Vaatame nüüd C-tüüpi osuti eri tüüpe
C osuti tüübid
C-s on erinevat tüüpi osutit. Üldiselt kasutatakse osuti põhitüüpe:
- NULL osuti
- Dangling Pointer
- Üldised näpunäited
- Metsik pointer
Selgitame neid igaüks
1. Nullkursor: nullkursor on osuti tüüp, mis osutab millelegi. Üldiselt osutab see segmendi põhiaadressile. Kui osutile ei omistata midagi, on sellel nullväärtus
Üldiselt kasutatakse seda päisefailides nagu stdio.h, alloc.h
2. Dangler Pointer: Seda tüüpi osutit saab luua objekti kustutamisega kursori väärtust muutmata
3. Üldine osuti : Seda tüüpi osuti kuulutatakse tüübi muutujaga tühiseks. Kuna see on tühine andmetüüp, siis viidatakse sellele kui üldisele osutile. Seda tüüpi osuti ei osuta andmetele
4. Metsik osuti : Alustamata osutit nimetatakse metsikuks osutiks. Seda tüüpi osuti lähtestatakse töö ajal, kui seda on vaja kasutada. Seda tüüpi osutit nimetatakse metsikuks osutiks
Järeldus
C-osutusi kasutatakse muutuja aadressile osutamiseks. Neid muutujaid kasutatakse mälu dünaamiliseks jaotamiseks C-s. Need muutujad deklareeritakse tärniga, et näidata, et muutuja on osuti. Neid kasutatakse päisefailis programmeerimisel.
Soovitatavad artiklid
See on juhend C osutrite jaoks. Siin käsitleme C-osuti erinevaid tüüpe ja kasutusviise koos meetodite ja näidetega. Võite lisateabe saamiseks vaadata ka järgmisi artikleid -
- Mis on programmeerimiskeel?
- C vs C ++
- C-programmeerimise mustrid
- Parimad C-kompilaatorid
- C ++ osutusjuhendite juhend
- C # osutid näidetega