1 Ağustos 2008 Cuma

İŞARETÇİLER (POİNTERS)

C programcıları, bu dildeki en zor konulardan birinin işaretçiler olduğunu söylemektedir. Aynı kişilere sorulduğunda işaretçilerin kullanımının C dilini güçlü kılan en önemli sebeplerden biri olduğunu da ifade ederler. Buradan anlaşıldığı üzere işaretçiler önemli bir konudur. Özellikle dizi ve sritnglerle uğraşmak yerine işaretçiler ile işlem yapmak çok daha avantajlıdır.




İşaretçi Nedir?

İşaretçiler değişkenlerin kendisinden ziyade adreslerine işaret ederler. Bir işaretçi (pointer) bir adrestir. Bir işaretçi değişken ise adreslerin saklandığı yerdir. Bundan da anlaşılıyor ki işaretçilere veriler yerine bunların saklı oldukları adresler atanır.

C dilinde işaretçi kullanmanın avantajları:

1- Normal de bir fonksiyondan tek bir değer geri alınabilir. İşaretçiler ile birden fazla değer almak mümkündür.

2- Bir fonksiyondan başka birine dizi ve stringlerin aktarılması daha güvenli yapılabilir.

3- İşaretçiler kullanılarak dizilerle daha kolay çalışılabilir.

4- Liste, ikil ağaç gibi kompleks veri yapıları işaretçilerle daha kolay kullanılabilir. Bellek kullanımı ve yönetimi işaretçilerle daha kolaydır.




İşaretçi (Pointer) Değişken Tanımlama

İşaretçi değişken :

İnt * sayi;
Burada sayi değişkenin adıdır. * karakteri ise bu değişkenin bir işaretçi değişken olduğunu gösterir. İnt ise değişkenin veri tipi göstermektedir. Görüldüğü gibi işaretçi değişken tanımlama ile normal değişken tanımlama arasındaki fark değişken adının önüne * karakterinin getirilmesidir

Pointer Operatörler

C programlama dilinin en büyük özelliklerinden biri pointer kullanımının yaygın olmasıdır. Pointer işlemlerinde iki adet operatör kullanılır. Bunlar ‘*’ ve ‘&’ operatörleridir. ‘*’ dolaylı gösterim, ‘&’ ise adres gösterir. ‘&’ operatörü ile bir değişken ya da fonksiyonun bellek adresinin elde edilmesini, ‘*’ operatörü ise pointer edilen değerin elde edilmesini sağlar.

operatörü aynı zamanda pointer işlemlerinde değişkenin önüne getirilerek belirtilen değişken veya fonksiyonun adresini tutmak amacıyla kullanılır.
İnt *x, *y; ifadesi ile x ve y değişkenleri int tipinde bir verinin saklı bulunduğu bellek hücresinin adresini tutacaktır.

& operatörü pointer olarak önüne geldiği değişkenin değerini değil, onun bellekte bulunduğu adresi verir.

int x, *y;
x=3; y=&x Tanımlama ve atama işleminde y değişkeninin değeri x değişkenin adresine karşılık gelmektedir. Aynı şekilde y’nin işaret ettiği değer ise x değişkeninin değeridir.

Hiç yorum yok: