Constante wijzers
Een constante pointer in C kan het adres van de variabele waarnaar hij verwijst niet veranderen, dat wil zeggen dat het adres constant blijft. Daarom kunnen we zeggen dat als een constante pointer naar een bepaalde variabele verwijst, deze niet naar een andere variabele kan verwijzen.
Syntaxis van constante aanwijzer
*const ;
Hieronder wordt een verklaring van een constante aanwijzer gegeven:
powershell versus bash
int *const ptr;
Laten we de constante aanwijzer begrijpen aan de hand van een voorbeeld.
#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; }
In de bovenstaande code:
- We declareren twee variabelen, namelijk a en b met respectievelijk de waarden 1 en 2.
- We verklaren een constante wijzer.
- Eerst wijzen we het adres van variabele 'a' toe aan de pointer 'ptr'.
- Vervolgens wijzen we het adres van variabele 'b' toe aan de pointer 'ptr'.
- Ten slotte proberen we de waarde af te drukken van de variabele waarnaar de 'ptr' verwijst.
Uitvoer
In de bovenstaande uitvoer kunnen we zien dat de bovenstaande code de fout 'toewijzing van alleen-lezen variabele 'ptr' produceert. Het betekent dat de waarde van de variabele 'ptr' die 'ptr' bevat, niet kan worden gewijzigd. In de bovenstaande code veranderen we de waarde van 'ptr' van &a in &b, wat niet mogelijk is met constante verwijzingen. Daarom kunnen we zeggen dat de constante pointer, die naar een bepaalde variabele verwijst, niet naar een andere variabele kan verwijzen.
Wijzer naar Constant
Een pointer naar een constante is een pointer waardoor de waarde van de variabele waarnaar de pointer wijst, niet kan worden gewijzigd. Het adres van deze pointers kan worden gewijzigd, maar de waarde van de variabele waarnaar de pointer wijst, kan niet worden gewijzigd.
Syntaxis van aanwijzer naar constante
const *
Declaratie van een pointer naar constante wordt hieronder gegeven:
const int* ptr;
Laten we het begrijpen aan de hand van een voorbeeld.
#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; }
In de bovenstaande code:
- We declareren twee variabelen, namelijk a en b met respectievelijk de waarden 100 en 200.
- We verklaren een verwijzing naar constant.
- Eerst wijzen we het adres van variabele 'a' toe aan de pointer 'ptr'.
- Vervolgens wijzen we het adres van variabele 'b' toe aan de pointer 'ptr'.
- Tenslotte proberen we de waarde van 'ptr' af te drukken.
Uitvoer
De bovenstaande code wordt succesvol uitgevoerd en toont de waarde van 'ptr' in de uitvoer.
- Nu schrijven we de code waarin we de waarde veranderen van de variabele waarnaar de aanwijzer verwijst.
#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; }
In de bovenstaande code:
applet
- We declareren twee variabelen, namelijk 'a' en 'b' met respectievelijk de waarden 100 en 200.
- We verklaren een verwijzing naar constant.
- We wijzen het adres van de variabele 'b' toe aan de pointer 'ptr'.
- Vervolgens proberen we de waarde van de variabele 'b' te wijzigen via de pointer 'ptr'.
- Ten slotte proberen we de waarde af te drukken van de variabele waarnaar wordt verwezen door de pointer 'ptr'.
Uitvoer
De bovenstaande code toont de fout 'toewijzing van alleen-lezen locatie '*ptr''. Deze fout betekent dat we de waarde van de variabele waarnaar de pointer verwijst niet kunnen wijzigen.
Constante aanwijzer naar een constante
Een constante pointer naar een constante is een pointer, die een combinatie is van de bovenstaande twee pointers. Het kan het adres van de variabele waarnaar het verwijst niet veranderen, noch de waarde die op dit adres is geplaatst.
Syntaxis
const * const ;
De verklaring voor een constante verwijzing naar een constante wordt hieronder gegeven:
const int* const ptr;
Laten we het begrijpen aan de hand van een voorbeeld.
#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; }
In de bovenstaande code:
- We declareren twee variabelen, namelijk 'a' en 'b' met respectievelijk de waarden 10 en 90.
- We declareren een constante verwijzing naar een constante en wijzen vervolgens het adres 'a' toe.
- We proberen de waarde van de variabele 'a' te veranderen via de pointer 'ptr'.
- Vervolgens proberen we het adres van variabele 'b' toe te wijzen aan de pointer 'ptr'.
- Ten slotte printen we de waarde van de variabele, waarnaar wordt verwezen door de pointer 'ptr'.
Uitvoer
De bovenstaande code toont de fout 'toewijzing van alleen-lezen locatie '*ptr'' en 'toewijzing van alleen-lezen variabele 'ptr''. Daarom concluderen we dat de constante pointer naar een constante noch het adres, noch de waarde kan veranderen, die door deze pointer wijst.