Göstericilerde Const Kullanımı

Göstericilerde Const Kullanımı

Const ve Göstericiler

     const belirteci, programcının derleyiciye belirli bir değişkenin değerinin değiştirilmemesi gerektiğinin bildirmesini sağlar.

     Yıllar boyunca, C’nin eski sürümlerinde const bulunmadığı için, bu belirteci kullanmayan oldukça fazla sayıda kod yazılmıştır. Bu sebepten, eski C kodlarında, yazılım mühendisliği açısından oldukça büyük iyileştirmeler yapma şansı bulunmaktadır. Ayrıca şu anda ANSI C kullanan bazı programcılar, programlamaya C’nin eski sürümlerinde başladıklarından, programlarında const kullanmazlar. Bu programcılar, yazılım mühendisliği açısından bir çok fırsatı kaçırmaktadırlar.

Sabit olmayan veriyi gösteren sabit olmayan gösterici kullanarak küçük harfleri büyük harfe çevirmek

  1. #include <stdio.h>
  2. #include <ctype.h>
  3.  
  4. void buyukHarfeCevir( char * );
  5.  
  6. int main( )
  7. {
  8. /* string adında bir dizi tanımlanmış*/
  9. char string[ ] = "karakterler";
  10.  
  11. printf( "Cevrilmeden onceki string: %s\n", string );
  12.  
  13. buyukHarfeCevir( string );
  14.  
  15. printf( "\nCevrildikten sonraki string: %s\n", string );
  16.  
  17. return 0;
  18. }
  19. void buyukHarfeCevir ( char *sPtr )
  20. {
  21. while ( *sPtr != '\0' )
  22. {
  23. if ( islower( *sPtr ) )
  24. /* büyük harfe çevir */
  25. *sPtr = toupper( *sPtr );
  26. /* sPtr ile diğer karaktere geç */
  27. ++sPtr;
  28. }
  29. }

buyukHarfeCevir fonksiyonu, argümanını sabit olmayan bir veriyi gösteren sabit olmayan gösterici , sPtr ( char *sPtr ) , biçiminde bildirmektedir.

C standart kütüphane fonksiyonu  islower, sPtr ile gösterilen adresin içeriğine bakmaktadır.Eğer karakter a-z aralığında ise islower fonksiyonu doğru bir değer döndürür ve C standart kütüphane fonksiyonu olan toupper, karakteri büyük harfe çevirmek için çağrılır. Aksi takdirde, islower yanlış bir değer döndürür ve string içindeki bir sonraki karakter ele alınır.

     İlk ekran çıktısında dikkat edildiğine fonksiyon çağrılmadığında karakterler string dizisi hepsi küçük harftir.

     İkinci ekran çıktısı incelendiğinde string hepsi büyük harftir fakat fonksiyondan herhangi bir değer main’return komutu ile döndürülmemiş adreste olan değişiklikler dizini ana fonksiyonda kendisine yansımıştır.

Sabit bir veriyi gösteren sabit olmayan bir gösterici kullanarak bir stringin karakterlerini sırayla yazdırmak

  1. #include <stdio.h>
  2.  
  3. void karakterleriYazdir ( const char * );
  4.  
  5. int main( )
  6. {
  7. char string [ ] = "karakterler";
  8.  
  9. printf( "String:\n" );
  10. karakterleriYazdir( string );
  11. printf( "\n" );
  12. return 0;
  13. }
  14. void karakterleriYazdir ( const char *sPtr )
  15. {
  16. /* ilk değer ataması yok */
  17. for ( ; *sPtr != '\0'; sPtr++ )
  18. printf( "%c", *sPtr );
  19. }

Sabit bir veriyi gösteren sabit olmayan gösterici, her hangi bir anda değiştirilerek uygun tipte bir veriyi gösterebilir ancak gösterdiği veri değiştirilemez. 

karakterleriYazdir fonksiyonunda sPtr bir karakter sabitini gösteren göstericidir. Karakterler sPtr kullanarak değiştirilemezler (yani sptr, sadece okunabilir bir göstericidir). 

for yapısı kullanarak, null karakterle karşılaşıncaya kadar string içindeki her karakteri yazdırmaktadır. Her karakter yazdırıldıktan sonra sPtr göstericisi, string içindeki diğer karakteri göstermek için arttırılmaktadır.

const belirteci, değerin değiştirilmesini engellemek için değere göre çağırmanın en iyi yoldur.

  1. #include <stdio.h>
  2.  
  3. int main( )
  4. {
  5. int x, y;
  6. int * const ptr = &x;
  7.  
  8. *ptr = 7;
  9. ptr = &y;
  10.  
  11. return 0;
  12. }

6. satırda ptr, tamsayı gösteren sabit bir göstericidir.Bir tamsayı ptr ile değiştirilebilir ama ptr hafızada her zaman aynı yeri gösterir 

Kimler Neler Demiş?

  Abone ol  
Bildir