29 Aralık 2011 Perşembe

C ve C++'ta İşaretçiler (Pointers): İşaretçi Türleri ve Diziler

Evet işaretçilere kaldığımız yerden devam ediyoruz. Şöyle bir işaretçi değişken bildirimi yaptığımızı düşünelim:

   int *ptr;

Bu işaretçinin gösterdiği değişkenin türünü neden tanımlamamız gerektiği üzerine düşünerek konumuza başlayalım.

Bunun nedeni,

   *ptr = 2;

yazdığımızda derleyicinin ptr ile gösterilen bellek konumuna ne kadar bayt kopyalayacağını bilmesi içindir. Eğer ptr bir tamsayı (integer) işaretçisi olarak bildirilmişse 2 bayt kopyalanacak, eğer uzun tamsayı (long) olarak bildirilmişse 4 bayt kopyalanacaktır. Aynı şekilde ondalıklı (float) ve çift duyarlıklı ondalıklı (double) sayılar için de uygun miktarda bayt kopyalanacaktır. Fakat işaretçinin gösterdiği türün tanımlanması derleyicinin, kodu farklı yöntemleri kullanarak yorumlamasına izin verir. Mesela bellekte bir satırda on tamsayıdan oluşan bir bloğumuz olsun. Bu on tamsayıyı tutmak için 20 bayt bellek ayrılacaktır.

27 Aralık 2011 Salı

C ve C++'ta İşaretçiler (Pointers)

Merhabalar, uzun zamandan beri blogumla ilgilenemedim. Bir süredir C ve C++'da önemli bir konu bir bel kemiği konusu olan İşaretçiler (Pointers) konusunda internette araştırmalar yapıyordum. İşaretçiler birçokları için korkulu bir rüya. Ancak işaretçiler konusu anlaşılmadan tam anlamıyla bir C programcısı olmak çok zor hatta imkansız. Bu konuda internete bulduğum bir dökümandan biraz yazmak istiyorum.

İşaretçiler kapsam olarak çok geniş. Ancak yazı kısa tutulmuş ve en basit konu olan değişken kavramından başlayarak aşama aşama ilerlenmiş. Son olarak fonksiyon işaretçileriyle konu tamamlanmış.

Hazırsak başlayalım.