C ++ rādītāji ar piemēriem

Satura rādītājs:

Anonim

Kas ir rādītāji?

C ++ rādītājs norāda uz mainīgo, kas satur cita mainīgā adresi. Tāpat kā parastajiem mainīgajiem, arī rādītājiem ir datu tips. Piemēram, vesela skaitļa rādītājā var ievietot vesela skaitļa mainīgā adresi. Rakstzīmju tipa rādītājā var ievietot rakstzīmju tipa mainīgā adresi.

Rādītājs ir jāredz kā atmiņas adreses simbolisks attēlojums. Izmantojot rādītājus, programmas var simulēt izsaukumu pēc atsauces. Viņi var arī izveidot un manipulēt ar dinamiskām datu struktūrām. Programmā C ++ rādītāja mainīgais attiecas uz mainīgo, kas norāda uz noteiktu adresi atmiņā, uz kuru norāda cits mainīgais.

Šajā C ++ apmācībā jūs uzzināsiet:

  • Kas ir rādītāji?
  • Adreses C ++
  • Rādītāja deklarācijas sintakse
  • Atsauces operators (&) un atsauces operators (*)
  • Norādes un masīvi
  • NULL rādītājs
  • Mainīgo rādītāji
  • Norāžu lietošana
  • Rādītāju izmantošanas priekšrocības

Adreses C ++

Lai saprastu C ++ rādītājus, jums ir jāsaprot, kā datori glabā datus.

Izveidojot mainīgo C ++ programmā, tam tiek piešķirta vieta datora atmiņā. Šī mainīgā vērtība tiek saglabāta piešķirtajā vietā.

Lai uzzinātu vietu datora atmiņā, kur dati tiek glabāti, C ++ nodrošina operatoru & (atsauce). Operators atgriež adresi, kuru mainīgais aizņem.

Piemēram, ja x ir mainīgais, & x atgriež mainīgā adresi.

Rādītāja deklarācijas sintakse

C ++ deklarācijai ir šāda sintakse:

datatype *variable_name;
  • Datu tips ir rādītāja pamata tips, kuram jābūt derīgam C ++ datu tipam.
  • Mainīgajam_nosaukumam ir jābūt rādītāja mainīgā nosaukumam.
  • Rādītāja deklarēšanai iepriekš izmantotā zvaigznīte ir līdzīga zvaigznītei, ko izmanto reizināšanas darbības veikšanai. Tieši zvaigznīte iezīmē mainīgo kā rādītāju.

Šeit ir derīgu rādītāju deklarāciju piemērs C ++:

int *x; // a pointer to integerdouble *x; // a pointer to doublefloat *x; // a pointer to floatchar *ch // a pointer to a character

Atsauces operators (&) un atsauces operators (*)

Atsauces operators (&) atgriež mainīgā adresi.

Novirzīšanas operators (*) palīdz mums iegūt vērtību, kas ir saglabāta atmiņas adresē.

Piemēram:

Ja mums ir mainīgais, kam dots nosaukums num, tas ir saglabāts adresē 0x234 un glabā vērtību 28.

Atsauces operators (&) atgriezīs 0x234.

Dereference operators (*) atgriezīsies 5.

1. piemērs:

#include using namespace std;int main() {int x = 27;int *ip;ip = &x;cout << "Value of x is : ";cout << x << endl;cout << "Value of ip is : ";cout << ip<< endl;cout << "Value of *ip is : ";cout << *ip << endl;return 0;}

Izeja:

Kā tas darbojas:

Šeit ir koda ekrānuzņēmums:

Koda skaidrojums:

  1. Importējiet iostream galvenes failu. Tas ļaus mums izmantot galvenes failā noteiktās funkcijas, neradot kļūdas.
  2. Iekļaujiet standarta nosaukumvietu, lai izmantotu tās klases, to neizsaucot.
  3. Izsauciet galveno () funkciju. Šīs funkcijas pamattekstā jāpievieno programmas loģika. {Apzīmē funkcijas ķermeņa sākumu.
  4. Paziņojiet vesela skaitļa mainīgo x un piešķiriet tam vērtību 27.
  5. Paziņojiet rādītāja mainīgo * ip.
  6. Saglabājiet mainīgā x adresi rādītāja mainīgajā.
  7. Izdrukājiet tekstu konsolē.
  8. Uz ekrāna izdrukājiet mainīgā x vērtību.
  9. Izdrukājiet tekstu konsolē.
  10. Izdrukājiet mainīgā x adresi. Adreses vērtība tika saglabāta mainīgajā ip.
  11. Izdrukājiet tekstu konsolē.
  12. Drukas vērtība, kas saglabāta uz rādītāja adreses.
  13. Programmai vajadzētu atgriezties pēc veiksmīgas izpildes.
  14. Galvenās () funkcijas ķermeņa beigas.

Norādes un masīvi

Masīvi un rādītāji darbojas, pamatojoties uz saistītu koncepciju. Strādājot ar masīviem ar rādītājiem, jāņem vērā dažādas lietas. Masīva nosaukums pats par sevi norāda masīva bāzes adresi. Tas nozīmē, ka, lai piešķirtu rādītājam masīva adresi, nevajadzētu izmantot zīmi (&).

Piemēram:

p = arr;

Iepriekš minētais ir pareizs, jo arr apzīmē masīvu adresi. Šeit ir vēl viens piemērs:

p = &arr;

Iepriekš minētais nav pareizs.

Masīvu mēs varam netieši pārveidot par rādītāju. Piemēram:

int arr [20];int * ip;

Zemāk ir derīga darbība:

ip = arr;

Pēc iepriekš minētās deklarācijas ip un arr būs līdzvērtīgi, un viņiem būs kopīgas īpašības. Tomēr ip var piešķirt citu adresi, taču arr mēs neko nevaram piešķirt.

2. piemērs:

Šis piemērs parāda, kā šķērsot masīvu, izmantojot rādītājus:

#include using namespace std;int main() {int *ip;int arr[] = { 10, 34, 13, 76, 5, 46 };ip = arr;for (int x = 0; x < 6; x++) {cout << *ip << endl;ip++;}return 0;}

Izeja:

Šeit ir koda ekrānuzņēmums:

Koda skaidrojums:

  1. Paziņot vesela skaitļa rādītāja mainīgo ip.
  2. Pasludiniet masīvu ar nosaukumu arr un saglabājiet tajā 6 veselus skaitļus.
  3. Piešķirt arr ip. IP un arr kļūs līdzvērtīgi.
  4. Izveidojiet cilpu a. Cilpas mainīgais x tika izveidots, lai atkārtotu masīva elementus no 0 līdz 5 indeksam.
  5. Izdrukājiet vērtības, kas saglabātas rādītāja IP adresē. Viena vērtība tiks atdota katrā atkārtojumā, un kopā tiks veikti 6 atkārtojumi. Endl ir C ++ atslēgvārds, kas nozīmē beigu līniju. Šī darbība ļauj pārvietot kursoru uz nākamo rindu pēc katras vērtības izdrukāšanas. Katra vērtība tiks izdrukāta atsevišķā rindā.
  6. Lai pārvietotu rādītāju uz nākamo int pozīciju pēc katras atkārtošanas.
  7. Cilpas beigas.
  8. Veiksmīgi izpildot programmu, kaut kas ir jāatgriež.
  9. Galvenās () funkcijas ķermeņa beigas.

NULL rādītājs

Ja nav precīzas adreses, kas jāpiešķir, rādītāja mainīgajam var piešķirt NULL. Tas jādara deklarācijas laikā. Šādu rādītāju sauc par nulles rādītāju. Tās vērtība ir nulle un tiek definēta daudzās standarta bibliotēkās, piemēram, iostream.

3. piemērs:

#include using namespace std;int main() {int *ip = NULL;cout << "Value of ip is: " << ip;return 0;}

Izeja:

Šeit ir koda ekrānuzņēmums:

Koda skaidrojums:

  1. Paziņojiet rādītāja mainīgo ip un piešķiriet tam vērtību NULL.
  2. Drukāt rādītāja mainīgā ip vērtību blakus tekstam konsolē.
  3. Pēc sekmīgas pabeigšanas programmai ir jāatgriež vērtība.
  4. Galvenās () funkcijas ķermeņa beigas.

Mainīgo rādītāji

Izmantojot C ++, jūs varat manipulēt ar datiem tieši no datora atmiņas.

Atmiņas vietu var piešķirt vai pārdalīt pēc vēlēšanās. To ļauj rādītāja mainīgie.

Rādītāja mainīgie norāda uz noteiktu adresi datora atmiņā, uz kuru norāda cits mainīgais.

To var deklarēt šādi:

int *p;

Vai arī

int* p;

Jūsu piemērā mēs esam deklarējuši rādītāja mainīgo p.

Tajā būs atmiņas adrese.

Zvaigznīte ir novirzes operators, kas nozīmē rādītāju.

Rādītājs p norāda veselu skaitli atmiņas adresē.

4. piemērs:

#include using namespace std;int main() {int *p, x = 30;p = &x;cout << "Value of x is: " << *p;return 0;}

Izeja:

Šeit ir koda ekrānuzņēmums:

Koda skaidrojums:

  1. Pasludiniet rādītāja mainīgo p un mainīgo x ar vērtību 30.
  2. Piešķiriet mainīgā x adresi p.
  3. Drukājiet rādītāja mainīgā p vērtību konsolē blakus tekstam.
  4. Pēc sekmīgas pabeigšanas programmai ir jāatgriež vērtība.
  5. Galvenās () funkcijas ķermeņa beigas.

Norāžu lietošana

Funkcijas C ++ var atgriezt tikai vienu vērtību. Turklāt visi funkcijā deklarētie mainīgie tiek piešķirti funkcijas izsaukuma kaudzē. Tiklīdz funkcija atgriežas, visi kaudzes mainīgie tiek iznīcināti.

Funkcijas argumenti tiek nodoti pēc vērtības, un jebkura mainīgo mainīšana nemaina faktisko pārsūtīto vērtību. Šis piemērs palīdz ilustrēt šo jēdzienu:

5. piemērs:

#include using namespace std;void test(int*, int*);int main() {int a = 5, b = 5;cout << "Before changing: << endl;cout << "a = " << a << endl;cout << "b = " << b << endl;test(&a, &b);cout << "\nAfter changing" << endl;cout << "a = " << a << endl;cout << "b = " << b << endl;return 0;}void test(int* n1, int* n2) {*n1 = 10;*n2 = 11;}

Izeja:

Šeit ir koda ekrānuzņēmums:

Koda skaidrojums:

  1. Izveidojiet funkcijas prototipu ar nosaukumu tests, kuram būs nepieciešami divi vesela skaitļa parametri.
  2. Izsauciet galveno () funkciju. Mēs pievienosim programmas loģiku tās iekšpusē.
  3. Paziņojiet divus veselu skaitļu mainīgos a un b, katrs ar vērtību 5.
  4. Izdrukājiet tekstu konsolē. Galotne (beigu līnija) pārvietos kursoru, lai sāktu drukāt nākamajā rindā.
  5. Drukājiet mainīgā a vērtību konsolē līdzās citam tekstam. Galotne (beigu līnija) pārvietos kursoru, lai sāktu drukāt nākamajā rindā.
  6. Drukājiet mainīgā b vērtību konsolē līdzās citam tekstam. Galotne (beigu līnija) pārvietos kursoru, lai sāktu drukāt nākamajā rindā.
  7. Izveidojiet funkciju ar nosaukumu test (), kas kā parametrus ņem mainīgā a un b adreses.
  8. Izdrukājiet tekstu konsolē. Pirms teksta drukāšanas \ n izveidos jaunu tukšu rindu. Galotne (beigu līnija) pārvietos kursoru, lai sāktu drukāt nākamajā rindā pēc teksta izdrukāšanas.
  9. Drukājiet mainīgā a vērtību konsolē līdzās citam tekstam. Galotne (beigu līnija) pārvietos kursoru, lai sāktu drukāt nākamajā rindā.
  10. Drukājiet mainīgā b vērtību konsolē līdzās citam tekstam. Galotne (beigu līnija) pārvietos kursoru, lai sāktu drukāt nākamajā rindā.
  11. Pēc sekmīgas pabeigšanas programmai ir jāatgriež vērtība.
  12. Galvenās () funkcijas ķermeņa beigas.
  13. Funkcijas testa () noteikšana. Funkcijai jāņem divi veseli skaitļu rādītāju mainīgie * n1 un * n2.
  14. Piešķirot rādītāja mainīgajam * n1 vērtību 10.
  15. Piešķirot rādītāja mainīgajam * n2 vērtību 11.
  16. Funkcijas testa pamatteksta beigas ().

Pat ja funkcijas testā mainīgajiem a un b tiek piešķirtas jaunas vērtības, pēc funkcijas izsaukuma pabeigšanas tas netiek atspoguļots ārējās funkcijas galvenajā.

Rādītāju izmantošana kā funkcijas argumenti palīdz pārsūtīt mainīgā faktisko adresi funkcijā, un visas mainīgajam veiktās izmaiņas tiks atspoguļotas ārējā funkcijā.

Iepriekš minētajā gadījumā funkcijai “test” ir mainīgo “a” un “b” adrese. Šie divi mainīgie ir tieši pieejami, izmantojot funkciju “test”, un līdz ar to visas izmaiņas, kas veiktas šajos mainīgajos, tiek atspoguļotas zvanītāja funkcijā “main”.

Rādītāju izmantošanas priekšrocības

Šeit ir norādījumi par plusi / priekšrocībām

  • Rādītāji ir mainīgie, kas C ++ saglabā citu mainīgo adresi.
  • Vairāk nekā vienu mainīgo var mainīt un atgriezt, izmantojot funkciju, izmantojot rādītājus.
  • Atmiņu var dinamiski piešķirt un atdalīt, izmantojot rādītājus.
  • Norādes palīdz vienkāršot programmas sarežģītību.
  • Programmas izpildes ātrums uzlabojas, izmantojot rādītājus.

Kopsavilkums:

  • Rādītājs attiecas uz mainīgā turētāja citu mainīgo adresi.
  • Katram rādītājam ir derīgs datu tips.
  • Rādītājs ir atmiņas adreses simbolisks attēlojums.
  • Norādes ļauj programmām simulēt izsaukumu pēc atsauces un izveidot un manipulēt ar dinamiskām datu struktūrām.
  • Masīvos un rādītājos tiek izmantots saistīts jēdziens.
  • Masīva nosaukums apzīmē masīva bāzi.
  • Ja vēlaties rādītājam piešķirt masīva adresi, nelietojiet zīmi (&).
  • Ja nav īpašas adreses, lai piešķirtu rādītāja mainīgo, piešķiriet tai NULL.