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:

  1. Kasutades ampersand (&) meetodit
  2. 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 -

  1. Mis on programmeerimiskeel?
  2. C vs C ++
  3. C-programmeerimise mustrid
  4. Parimad C-kompilaatorid
  5. C ++ osutusjuhendite juhend
  6. C # osutid näidetega

Kategooria: