Ständiga pekare
En konstantpekare i C kan inte ändra adressen till variabeln som den pekar mot, dvs adressen kommer att förbli konstant. Därför kan vi säga att om en konstant pekare pekar på någon variabel, så kan den inte peka på någon annan variabel.
Syntax för konstant pekare
*const ;
Deklaration av en konstant pekare ges nedan:
skriva ut från java
int *const ptr;
Låt oss förstå den konstanta pekaren genom ett exempel.
#include int main() { int a=1; int b=2; int *const ptr; ptr=&a; ptr=&b; printf('Value of ptr is :%d',*ptr); return 0; }
I ovanstående kod:
- Vi deklarerar två variabler, dvs a och b med värdena 1 respektive 2.
- Vi förklarar en konstant pekare.
- Först tilldelar vi adressen för variabel 'a' till pekaren 'ptr'.
- Sedan tilldelar vi adressen för variabel 'b' till pekaren 'ptr'.
- Slutligen försöker vi skriva ut värdet på variabeln som pekas av 'ptr'.
Produktion
I ovanstående utdata kan vi observera att ovanstående kod ger felet 'tilldelning av skrivskyddad variabel 'ptr''. Det betyder att värdet på variabeln 'ptr' som 'ptr' håller på inte kan ändras. I koden ovan ändrar vi värdet på 'ptr' från &a till &b, vilket inte är möjligt med konstanta pekare. Därför kan vi säga att konstantpekaren, som pekar på någon variabel, inte kan peka på en annan variabel.
Pekare till konstant
En pekare till konstant är en pekare genom vilken värdet på variabeln som pekaren pekar inte kan ändras. Adressen för dessa pekare kan ändras, men värdet på variabeln som pekarna pekar på kan inte ändras.
Syntax för pekare till konstant
const *
Deklaration av en pekare till konstant ges nedan:
const int* ptr;
Låt oss förstå genom ett exempel.
#include int main() { int a=100; int b=200; const int* ptr; ptr=&a; ptr=&b; printf('Value of ptr is :%u',ptr); return 0; }
I ovanstående kod:
- Vi deklarerar två variabler, dvs a och b med värdena 100 respektive 200.
- Vi förklarar en pekare till konstant.
- Först tilldelar vi adressen för variabel 'a' till pekaren 'ptr'.
- Sedan tilldelar vi adressen för variabel 'b' till pekaren 'ptr'.
- Slutligen försöker vi skriva ut värdet för 'ptr'.
Produktion
Ovanstående kod körs framgångsrikt och den visar värdet på 'ptr' i utdata.
- Nu skriver vi koden där vi ändrar värdet på variabeln som pekaren pekar på.
#include int main() { int a=100; int b=200; const int* ptr; ptr=&b; *ptr=300; printf('Value of ptr is :%d',*ptr); return 0; }
I ovanstående kod:
binärt sökträd]
- Vi deklarerar två variabler, d.v.s. 'a' och 'b' med värdena 100 respektive 200.
- Vi förklarar en pekare till konstant.
- Vi tilldelar adressen för variabeln 'b' till pekaren 'ptr'.
- Sedan försöker vi modifiera värdet på variabeln 'b' genom pekaren 'ptr'.
- Slutligen försöker vi skriva ut värdet på variabeln som pekas av pekaren 'ptr'.
Produktion
Ovanstående kod visar felet 'tilldelning av skrivskyddad plats '*ptr''. Detta fel innebär att vi inte kan ändra värdet på variabeln som pekaren pekar på.
Konstant pekare till en konstant
En konstant pekare till en konstant är en pekare, som är en kombination av ovanstående två pekare. Den kan varken ändra adressen till variabeln som den pekar på eller den kan ändra värdet på denna adress.
Syntax
const * const ;
Deklaration för en konstant pekare till en konstant ges nedan:
const int* const ptr;
Låt oss förstå genom ett exempel.
#include int main() { int a=10; int b=90; const int* const ptr=&a; *ptr=12; ptr=&b; printf('Value of ptr is :%d',*ptr); return 0; }
I ovanstående kod:
- Vi deklarerar två variabler, d.v.s. 'a' och 'b' med värdena 10 respektive 90.
- Vi deklarerar en konstant pekare till en konstant och tilldelar sedan adressen till 'a'.
- Vi försöker ändra värdet på variabeln 'a' genom pekaren 'ptr'.
- Sedan försöker vi tilldela adressen för variabel 'b' till pekaren 'ptr'.
- Till sist skriver vi ut värdet på variabeln, som pekas av pekaren 'ptr'.
Produktion
Ovanstående kod visar felet 'tilldelning av skrivskyddad plats '*ptr'' och 'tilldelning av skrivskyddad variabel 'ptr''. Därför drar vi slutsatsen att konstantpekaren till en konstant varken kan ändra adress eller värde, vilket pekar av denna pekare.