İşaretçiler bir değişkenin adresine erişip değişkeni değiştirmek amacıyla kullanılabilir. Fakat bazı durumlarda değişkenin değiştirilmesini istemeyiz ve yalnızca okunabilir olmasını tercih edebiliriz. Bu sebeple const ön eki ile değişkenin yalnızca okunabilir olmasını sağlayabiliriz.
Olayı işaretçiler ile birleştirdiğimizde karşımıza şöyle bir senaryo çıkıyor.
const int * ptr;
Yani aslında değişkenlere uygular gibi işaretçilere de rahatlıkla uygulayabiliyoruz. Şimdi aşağıdaki yapıya göz atalım.
int main() {
int x = 10;
int y,z;
const int * ptr = &x;
y = *ptr;
cout << y; // Ekrana 10 çıktısını verir.
*ptr = z; // Yalnızca okunabilir bir nesne olduğu için hata verir.
}
Açıklama satırlarında belirttiğim gibi ptr isimli pointera yalnızca tek bir değer atayabiliriz.
İşaretleyiciler Sabitler Bakımından 4 Başlıkta İncelenir;
Sabit Olmayan İşaretleyici ve Sabit Olmayan Değişken
int * pointerAdi
int main() {
int x = 10;
int y = 5;
int * pointerAdi = &x;
}
Sabit Olmayan İşaretleyici ve Sabit Olan Değişken
const int * pointerAdi
int main() {
int x = 10;
int y = 5;
const int * pointerAdi = &x;
*pointerAdi = y; // HATA!
}
Sabit Olan İşaretleyici ve Sabit Olmayan Değişken
int * const pointerAdi
int main() {
int x = 10;
int y = 5;
int * const pointerAdi = &x;
pointerAdi = &y; // HATA
}
Sabit Olan İşaretleyici ve Sabit Olan Değişken
const int * const pointerAdi
int main() {
int x = 10;
int y = 5;
const int * const pointerAdi = &x;
pointerAdi = &y; // HATA
*pointerAdi = y; // HATA
}
Yukarıda 4 farklı işaretleyici ve sabit ilişkisini inceledik. Bu kombinasyonlar dikkat edilmesi gereken temellerdir.