Looking for pointers Answers? Try Ask4KnowledgeBase
Looking for pointers Keywords? Try Ask4Keywords

pointersKomma igång med pekare


Anmärkningar

Det här avsnittet ger en översikt över vad pekare är och varför en utvecklare kanske vill använda den.

Det bör också nämna alla stora ämnen inom pekare och koppla till relaterade ämnen. Eftersom dokumentationen för pekare är ny kan du behöva skapa initialversioner av relaterade ämnen.

Komma igång med pekare

Pekare är variabler som lagrar adressen till en annan variabel. Som språkfunktion finns de på flera programmeringsspråk som, men inte begränsade till:

  • C / C ++
  • Ada
  • Pascal
  • C # (tillgängligt under vissa begränsningar)
  • COBOL
  • FORTRAN

Följ dessa steg för att komma igång med C / C ++ -pekare

  1. Installera kompilator som Minimalistic GNU för Windows, http://www.mingw.org/wiki/Getting_Started

  2. Gå till installationsmappen för g ++ binär via kommandoraden till exempel:

    C:\MinGW\bin>
     

3. Skapa en textfil och skriv detta C ++ -program

#include <iostream>

int main () {

   int  pointed=0;
   int* ptr = & pointed;

   std::cout<<"Address of pointed variable is: "<<ptr<<std::endl;

   return 0;
}
 
  1. Spara som pointer.cpp 5. Kör kommandot i kommandotolken

g ++ -o pointer.exe -c pointer.cpp

  1. I arbetskatalogen får du en körbar som pointer.exe, detta exe vid körning ger lite utdata

Adress för den spetsiga variabeln är: 0x7e892dac0a0c

Om du får ovanstående utgång har du skrivit ditt första pekarprogram

Vad är en pekare?

Det är i princip adress för en variabel i minnet. Det tillåter oss indirekt åtkomst till en variabel. Så med hjälp av pekare kan vi prata om en variables adress (såväl som dess värde genom att återföra pekaren). De är användbara när vi vill ta itu med minnesplatsens adress snarare än dess värde.

Tänk på följande enkla bytefunktion i C:

void Swap(int firstVal, int secondVal)
{
 int tempVal = firstVal;
 firstVal = secondVal;
 secondVal = tempVal;
}
 

nu i huvudsak om vi har följande kod:

.
.
int a = 9,b = 100;
swap(a,b);
//print a and b
.
.
 

Värdena för a och b skulle förbli oförändrade, vilket skulle vara tydligt genom att skriva ut deras värden i huvudfunktionen. För att implementera swapfunktionen korrekt, istället för att lämna värdena på variablerna a och b , passerar vi adressen till variablerna a och b som:

swap(&a,&b);
 

Operatören & , returnerar variabelns adress. Den används så här:

int *address_of_a = &a;
 

int *address_of_a , anger att variabeln address_of_a pekar på (lagrar adressen till) en heltalvariabel.

Nu skulle vår korrekta swap-funktion vara:

void Swap(int *firstaddress, int *secondaddress)
{
 int tempVal = *firstaddress;
 *firsaddress = *secondaddress;
 *secondaddress = tempVal;
}
 

Nu skulle de utbytta värdena återspeglas i huvudfunktionen:

int a = 9,b = 100;
swap(&a,&b);
//print
 

Du kan alltid ta bort pekaren med * om du inte har den ursprungliga variabeln. Anta att om du inte har den ursprungliga variabeln i en funktion men har sin adress i en pekvariabeln int *x . Vi kan helt enkelt komma åt värdet på minnesadressen som value = *x ;

Om vi inte hade pekare kunde vi aldrig emulera pass genom referens i C , eftersom C är pass efter värde . Men kom ihåg att vi bara kan emulera , för även när vi använder pekare är int *firstaddress, int *secondaddress bara lokala pekvariabler som skapats, som har adressen till variablerna a och b .