logo

C'deki const İşaretçisi

Sabit İşaretçiler

C'deki sabit bir işaretçi işaret ettiği değişkenin adresini değiştiremez, yani adres sabit kalacaktır. Bu nedenle, eğer bir sabit işaretçi bir değişkene işaret ediyorsa, başka bir değişkene işaret edemeyeceğini söyleyebiliriz.

Sabit İşaretçinin Sözdizimi

 *const ; 

Sabit işaretçinin bildirimi aşağıda verilmiştir:

 int *const ptr; 

Sabit işaretçiyi bir örnek üzerinden anlayalım.

 #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; } 

Yukarıdaki kodda:

  • İki değişkeni, yani sırasıyla 1 ve 2 değerlerine sahip a ve b'yi bildiririz.
  • Sabit bir işaretçi ilan ediyoruz.
  • Öncelikle 'a' değişkeninin adresini 'ptr' işaretçisine atadık.
  • Daha sonra 'b' değişkeninin adresini 'ptr' işaretçisine atarız.
  • Son olarak 'ptr' ile gösterilen değişkenin değerini yazdırmaya çalışıyoruz.

Çıktı

C'deki const İşaretçisi

Yukarıdaki çıktıda, yukarıdaki kodun 'salt okunur değişken 'ptr' ataması' hatası ürettiğini gözlemleyebiliriz. Bu, 'ptr'nin tuttuğu 'ptr' değişkeninin değerinin değiştirilemeyeceği anlamına gelir. Yukarıdaki kodda 'ptr' değerini &a'dan &b'ye değiştiriyoruz ki bu sabit işaretçilerle mümkün değildir. Dolayısıyla bir değişkene işaret eden sabit işaretçinin başka bir değişkene işaret edemeyeceğini söyleyebiliriz.

Sabit İşaretçisi

Sabit işaretçisi, işaretçinin işaret ettiği değişkenin değerinin değiştirilemediği bir işaretçidir. Bu işaretçilerin adresi değiştirilebilir ancak işaretçinin işaret ettiği değişkenin değeri değiştirilemez.

Sabit İşaretçisinin Sözdizimi

 const * 

Bir işaretçinin sabite bildirimi aşağıda verilmiştir:

 const int* ptr; 

Bir örnek üzerinden anlayalım.

    Öncelikle pointerın değerini değiştireceğimiz kodu yazıyoruz.
 #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; } 

Yukarıdaki kodda:

  • İki değişkeni, yani sırasıyla 100 ve 200 değerleriyle a ve b'yi bildiririz.
  • Sabite bir işaretçi bildiririz.
  • Öncelikle 'a' değişkeninin adresini 'ptr' işaretçisine atadık.
  • Daha sonra 'b' değişkeninin adresini 'ptr' işaretçisine atarız.
  • Son olarak 'ptr' değerini yazdırmaya çalışıyoruz.

Çıktı

C'deki const İşaretçisi

Yukarıdaki kod başarıyla çalışıyor ve çıktıda 'ptr' değerini gösteriyor.

  • Şimdi pointerın işaret ettiği değişkenin değerini değiştireceğimiz kodu yazıyoruz.
 #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; } 

Yukarıdaki kodda:

  • İki değişkeni, yani sırasıyla 100 ve 200 değerleriyle 'a' ve 'b' bildiririz.
  • Sabite bir işaretçi bildiririz.
  • 'b' değişkeninin adresini 'ptr' işaretçisine atarız.
  • Daha sonra 'b' değişkeninin değerini 'ptr' işaretçisi aracılığıyla değiştirmeye çalışıyoruz.
  • Son olarak 'ptr' işaretçisinin gösterdiği değişkenin değerini yazdırmaya çalışıyoruz.

Çıktı

C'deki const İşaretçisi

Yukarıdaki kod 'salt okunur konum ataması'*ptr'' hatasını gösterir. Bu hata, işaretçinin işaret ettiği değişkenin değerini değiştiremeyeceğimiz anlamına gelir.

Bir Sabite Sabit İşaretçi

Bir sabite yönelik sabit işaretçi, yukarıdaki iki işaretçinin birleşimi olan bir işaretçidir. İşaret ettiği değişkenin adresini değiştiremeyeceği gibi, bu adrese yerleştirilen değeri de değiştiremez.

Sözdizimi

 const * const ; 

Bir sabit işaretçisinin bir sabite ilişkin bildirimi aşağıda verilmiştir:

 const int* const ptr; 

Bir örnek üzerinden anlayalım.

 #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; } 

Yukarıdaki kodda:

  • İki değişkeni, yani sırasıyla 10 ve 90 değerleriyle 'a' ve 'b' bildiririz.
  • Bir sabite sabit işaretçisi bildiririz ve ardından 'a'nın adresini atarız.
  • 'a' değişkeninin değerini 'ptr' işaretçisi aracılığıyla değiştirmeye çalışıyoruz.
  • Daha sonra 'b' değişkeninin adresini 'ptr' işaretçisine atamaya çalışıyoruz.
  • Son olarak 'ptr' işaretçisinin gösterdiği değişkenin değerini yazdırıyoruz.

Çıktı

C'deki const İşaretçisi

Yukarıdaki kod, 'salt okunur konumun atanması'*ptr'' ve 'salt okunur değişkenin atanması'ptr'' hatasını gösterir. Bu nedenle, bir sabite işaret eden sabit işaretçisinin ne adresi ne de bu işaretçinin işaret ettiği değeri değiştirebileceği sonucuna varırız.