Konstante pointere
En konstant pointer i C kan ikke ændre adressen på den variabel, den peger på, dvs. adressen forbliver konstant. Derfor kan vi sige, at hvis en konstant pointer peger på en variabel, så kan den ikke pege på nogen anden variabel.
Syntaks for konstant pointer
*const ;
Erklæring af en konstant pointer er givet nedenfor:
int *const ptr;
Lad os forstå den konstante pointer gennem et eksempel.
#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 ovenstående kode:
- Vi erklærer to variable, dvs. a og b med værdierne henholdsvis 1 og 2.
- Vi erklærer en konstant pointer.
- Først tildeler vi adressen på variabel 'a' til markøren 'ptr'.
- Derefter tildeler vi adressen på variabel 'b' til markøren 'ptr'.
- Til sidst forsøger vi at udskrive værdien af variablen peget med 'ptr'.
Produktion
I ovenstående output kan vi observere, at ovenstående kode producerer fejlen 'tildeling af skrivebeskyttet variabel 'ptr''. Det betyder, at værdien af variablen 'ptr', som 'ptr' holder, ikke kan ændres. I ovenstående kode ændrer vi værdien af 'ptr' fra &a til &b, hvilket ikke er muligt med konstante pointere. Derfor kan vi sige, at konstantmarkøren, som peger på en variabel, ikke kan pege på en anden variabel.
Pointer til konstant
En pointer til konstant er en pointer, hvorigennem værdien af den variable, som markøren peger på, ikke kan ændres. Adressen på disse pointere kan ændres, men værdien af variablen, som pointeren peger på, kan ikke ændres.
Syntaks for pointer til konstant
const *
Erklæring af en pointer til konstant er givet nedenfor:
const int* ptr;
Lad os forstå gennem et eksempel.
#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 ovenstående kode:
- Vi erklærer to variable, dvs. a og b med værdierne henholdsvis 100 og 200.
- Vi erklærer en pointer til konstant.
- Først tildeler vi adressen på variabel 'a' til markøren 'ptr'.
- Derefter tildeler vi adressen på variabel 'b' til markøren 'ptr'.
- Til sidst forsøger vi at udskrive værdien af 'ptr'.
Produktion
Ovenstående kode kører med succes, og den viser værdien af 'ptr' i outputtet.
- Nu skriver vi koden, hvori vi ændrer værdien af den variabel, som markøren peger 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 ovenstående kode:
- Vi erklærer to variable, dvs. 'a' og 'b' med værdierne henholdsvis 100 og 200.
- Vi erklærer en pointer til konstant.
- Vi tildeler adressen på variablen 'b' til pointeren 'ptr'.
- Derefter forsøger vi at ændre værdien af variablen 'b' gennem markøren 'ptr'.
- Til sidst forsøger vi at udskrive værdien af variablen, som peges af pointeren 'ptr'.
Produktion
Ovenstående kode viser fejlen 'tildeling af skrivebeskyttet placering '*ptr''. Denne fejl betyder, at vi ikke kan ændre værdien af den variabel, som markøren peger på.
Konstant pointer til en konstant
En konstant pointer til en konstant er en pointer, som er en kombination af de to ovenstående pointere. Den kan hverken ændre adressen på den variabel, den peger på, eller den kan ændre værdien placeret på denne adresse.
Syntaks
const * const ;
Erklæring for en konstant pointer til en konstant er givet nedenfor:
const int* const ptr;
Lad os forstå gennem et eksempel.
#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 ovenstående kode:
- Vi erklærer to variable, dvs. 'a' og 'b' med værdierne henholdsvis 10 og 90.
- Vi erklærer en konstant pointer til en konstant og tildeler derefter adressen på 'a'.
- Vi forsøger at ændre værdien af variablen 'a' gennem markøren 'ptr'.
- Derefter forsøger vi at tildele adressen på variabel 'b' til pointeren 'ptr'.
- Til sidst udskriver vi værdien af variablen, som peges med markøren 'ptr'.
Produktion
Ovenstående kode viser fejlen 'tildeling af skrivebeskyttet placering '*ptr'' og 'tildeling af skrivebeskyttet variabel 'ptr''. Derfor konkluderer vi, at den konstante pointer til en konstant hverken kan ændre adresse eller værdi, hvilket peger med denne pointer.