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.
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:
Följ dessa steg för att komma igång med C / C ++ -pekare
Installera kompilator som Minimalistic GNU för Windows, http://www.mingw.org/wiki/Getting_Started
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;
}
g ++ -o pointer.exe -c pointer.cpp
Adress för den spetsiga variabeln är: 0x7e892dac0a0c
Om du får ovanstående utgång har du skrivit ditt första pekarprogram
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
.