Mitkä ovat osoittimet C ++: ssa?

Osoittaa c ++: n tehokkain työkalu, se auttaa ohjelmoijaa pääsemään muistiin ja käsittelemään sitä suoraan. Esimerkiksi, kun muuttuja luodaan, kääntäjän tehtävä on suorittaa muistin varaus muuttujan arvon tallentamiseksi. Ja tämä arvo haetaan käyttämällä dataan määritettyä muuttujan nimeä. C ++: lla on yhteensopivuus tallentaa ja hakea tietoja muistista viitaten sen muistipaikan osoitteeseen, johon tiedot tallennetaan. C ++ jopa suorittaa osoittimia osoittimella.

Syntaksi

Osoittimen ilmoituksen yleinen muoto on:

Data_type * pointer -variable-name

Huomaa, että osoittimen muuttujaa tulee edeltää tähdellä (*)

Esimerkki: int * xptr;

Muuttuja xptr on osoitin kokonaislukulle. Osoitinmuuttujat voivat yleensä osoittaa kokonaislukumuuttujia, merkkimuuttujia, taulukkoja, tiedostoja, funktioita.

Miksi tarvitsemme osoittimia C ++ -sovelluksessa?

Dynaaminen muistinvaraus tehdään yksinkertaisella C ++ -sovelluksella osoittimien avulla, osoittimien tärkein merkitys on, että ne ovat paljon tehokkaampia käsittelemään erilaisia ​​tietotyyppejä. Ne lisäävät suoritusnopeutta, kun funktio palauttaa yhden arvon, ja antavat myös käden pääsyyn toiminnon ulkopuolella määriteltyyn muuttujaan. Yleisin käyttö sisältää tiedonhallinnan ja pääsyn luokan jäsentoimintoihin.

Kuinka luoda osoittimia C ++ -sovellukseen?

Tässä ovat seuraavat vaiheet osoittimien luomiseksi C ++: een

Vaihe # 1 - osoittimien alustaminen

On suositeltavaa alustaa osoittimen muuttujat heti, kun ne on ilmoitettu. Koska osoitinmuuttujat tallentavat osoitteita, ne voivat osoittaa mitä tahansa muistin osaa.

int *a; // pointer to an integer
double *da; // pointer to a double
float *fa; // pointer to afloat
char *ch // character pointer

Mieti seuraavaa esimerkkiä:

int p, * pi; // Tämä lausunto kehottaa kääntäjää varaamaan tilaa muuttujalle p muistissa kokonaisluvun pitämiseksi.

pi = & A; // Määrittää kokonaisluvun muuttujan p osoittomuuttujalle. Esimerkiksi, jos p: n osoite on 4581, niin * pi: n arvo on yhtä suuri kuin 4581.

Vaihe 2 - osoitin tyhjä

Tässä osoitinmuuttujan sallitaan osoittaa mitä tahansa tietotyyppiä ja tätä tyyppiä käytetään osoittimien ohittamiseen toimimaan, jotka toimivat riippumatta osoitetusta tietotyypistä.

Syntaksi: void * osoittimen muuttuja;

Esimerkki:

#include
#include
using namespace std;
int main ()
(
int x, *iv;
float f, *fv;
void *vp;
x=3;
f=45.2;
iv=&x;
fv=&f;
vp=&x;
cout<< "the value pointed by iv is "<<*iv<< endl;
cout<< "The address of x is "< cout<< "the value pointed by fv is "<<*fv<< endl;
cout<< "The address of f is "< cout<< "The address of x is "< vp= &f;
cout<< "the address of f is "< )
#include
#include
using namespace std;
int main ()
(
int x, *iv;
float f, *fv;
void *vp;
x=3;
f=45.2;
iv=&x;
fv=&f;
vp=&x;
cout<< "the value pointed by iv is "<<*iv<< endl;
cout<< "The address of x is "< cout<< "the value pointed by fv is "<<*fv<< endl;
cout<< "The address of f is "< cout<< "The address of x is "< vp= &f;
cout<< "the address of f is "< )
#include
#include
using namespace std;
int main ()
(
int x, *iv;
float f, *fv;
void *vp;
x=3;
f=45.2;
iv=&x;
fv=&f;
vp=&x;
cout<< "the value pointed by iv is "<<*iv<< endl;
cout<< "The address of x is "< cout<< "the value pointed by fv is "<<*fv<< endl;
cout<< "The address of f is "< cout<< "The address of x is "< vp= &f;
cout<< "the address of f is "< )
#include
#include
using namespace std;
int main ()
(
int x, *iv;
float f, *fv;
void *vp;
x=3;
f=45.2;
iv=&x;
fv=&f;
vp=&x;
cout<< "the value pointed by iv is "<<*iv<< endl;
cout<< "The address of x is "< cout<< "the value pointed by fv is "<<*fv<< endl;
cout<< "The address of f is "< cout<< "The address of x is "< vp= &f;
cout<< "the address of f is "< )
#include
#include
using namespace std;
int main ()
(
int x, *iv;
float f, *fv;
void *vp;
x=3;
f=45.2;
iv=&x;
fv=&f;
vp=&x;
cout<< "the value pointed by iv is "<<*iv<< endl;
cout<< "The address of x is "< cout<< "the value pointed by fv is "<<*fv<< endl;
cout<< "The address of f is "< cout<< "The address of x is "< vp= &f;
cout<< "the address of f is "< )

lähtö:

$ g ++ -o main * .cpp
$ main
iv: n osoittama arvo on 3
X: n osoite on 0x7ffefbbee6d4
fv: n osoittama arvo on 45, 2
F: n osoite on 0x7ffefbbee6d0
X: n osoite on 0x7ffefbbee6d4

f: n osoite on 0x7ffefbbee6d0

Vaihe # 3 - Osoittimet aritmeettinen toiminta C ++: ssa

Osoittimen aritmeettinen suoritus suoritetaan taulukkoilla. Seuraavat toiminnot voidaan suorittaa osoittimilla. He ovat:

  • Lisäys (++)
  • Asetus (-)
  • Osoittimen lisäys
  • Osoittimen vähennys

Kun lisäämme osoittimeen 1, se määrittää osoittimen koon lisäävän osoittimeen.

Alla oleva ohjelma määrittelee osoittimen aritmeettisen se toimii, kunnes se tulee taulukon loppuun.

#include
#include
using namespace std;
void pointerarithmetic(int a(), int size)
(
int *e, *t; //Declaring two int pointers variables
e = a; //assigning e to point the arrays initial element a(0) t = a + size; // assigning variable t to the array last element
while(e != t)
(
cout << *e << endl; //displays the e
e++; // incrementing ( next element)
)
)
int main()
(
int a() = (2, 4, 6, 8, 10, 12, 14, 16, 18, 20);
pointerarithmetic (a, 20);
return 0;
)

lähtö:

$ g ++ -o main * .cpp
$ main
2

4

6

8

10

12

14

16

18

20

0

0

4196480

0

-1743362854

32686

1

0

153860328

32766

Vaihe # 4 - osoitin osoittimeen

kellua ** fpp;

Se tarkoittaa osoittimien kahta tasoa ( useita indirektioita ). Se on muuttuja, joka osoittaa toiseen osoittimeen ja osoittaa edelleen muistipaikkaan määritettyyn kohteeseen. Esimerkiksi, fpp on kelluva osoitin, joka osoittaa tällä hetkellä muistiosoitteeseen 2001, kelluksen koko on 8 tavua, sitten

FPP ++;

osoittaa osoitteen 2009 osoittavan fpp: n. Vastaavasti, kun muuttujaa pienennetään yhdellä, se osoittaa perustyyppinsä aiempaan sijaintiin osoitteessa 1993.

Vaihe 5 - osoitin toimintoihin

Kun osoittimet siirretään funktiolle argumentteina, näihin osoittimien muuttujiin liittyvät tietoelementit muutetaan toiminnassa ja palautetaan sitten kutsuvaan ohjelmaan, muutokset säilytetään kutsuvassa ohjelmassa. Kun osoitin ohitetaan parametrina, vastaavat tietoelementit muuttuvat globaalisti kutsutun funktion sisällä. Osoitin ohitetaan viittauksella. Toiminnot voidaan suorittaa osoittimilla eri tavoin:

  1. toiminto, johon kutsutaan ohittamalla viite
  2. Toiminto, joka käynnistetään ohittamalla osoitin

Toiminto käynnistettiin ohittamalla viite

Tässä osoite välitetään argumenttina arvojen sijasta.

Esimerkki:

#include
using namespace std;
void changefn(int*, int*);
int main()
(
int n = 5, m = 6;
cout << "Before change" << endl;
cout << "n = " << n << endl;
cout << "m = " << m << endl;
changefn(&n, &m);
cout << "\nAfter change" << endl;
cout << "n = " << n << endl;
cout << "m = " << m << endl;
return 0;
)
void changefn(int* x1, int* x2) (
int s1;
s1 = *x1;
*x1 = *x2;
*x2 = s1;
)

lähtö:

$ g ++ -o main * .cpp
$ main
Ennen muutosta

n = 5

m = 6

Muutoksen jälkeen

n = 6

m = 5

johtopäätös

Tämän artikkelin tarkoituksena oli päivittää tietämystä siitä, kuinka osoittimia käytetään C ++: ssa ja niiden perusaiheita yksinkertaisella tavalla esimerkin avulla. Osoitin tunnetaan myös nimellä paikannin, joka vähentää koodikäskyä paremman suorituskyvyn saavuttamiseksi. Osoittimilla on tärkeä rooli tietorakenteiden, kuten linkitetyn luettelon ja ohjelmoinnin, toteuttamisessa järjestelmätasolla. Ne ovat suositeltavin kieli sulautetuissa järjestelmissä, koska ne ovat hyvä tapa käyttää muistia suoraan osoittimien avulla.

Suositellut artikkelit

Tämä on opas C ++: n osoittimiin. Tässä keskustellaan siitä, kuinka luoda viitteitä C ++: ssa annettujen esimerkkien ja tuotosten kanssa ja miksi me tarvitsemme sitä. Voit myös tarkastella seuraavaa tietoanalyysikurssia oppiaksesi lisää

  1. Osoittimet Pythonissa
  2. Tietotyypit C: ssä
  3. Ryhmät C ++: ssa
  4. Tähtikuviot c ++: ssa
  5. Kuinka osoittimet toimivat C #: ssä?