Software
Trend

[TR] C/C++ Öğreniyorum (#10)

[TR] C/C++ Öğreniyorum (#10)

Giriş

Merhaba, ben Süleyman Kaya. Bilgisayar bilimleri araştırmacısıyım. Bilgisayar bilimleri için C/C++ öğrenirken edindiğim bilgileri paylaşmak üzere bu yayın serisini sizlerle paylaşıyorum. Kaynak olarak Fahrettin Erdinç’in “Mühendislik Öğrencileri İçin Temel Klavuz: C++/C” kitabını kullanacağım. Bu yazımda C dilinde pointer’lardan bahsedeceğim.

Pointer (Gösterici) Nedir?

Bir değişkenin bellek adresini tutan değişkene pointer denir. Özellikle donanım seviyesinde çalışmalar yapıyorsak, yani otomasyon ve robot yazılımları geliştiriyorsanız çok işinize yarayacaktır. Ayrıca dizilerde ve string işlemlerinde de çok kullanılır.

Pointer’lar, C dilini diğer dillerden ayıran en önemli konudur.

Pointer’ları anlayabilmek için RAM belleğin yapısını iyi bilmek gerekiyor. Daha önce de anlatıldığı gibi RAM bellek alt alta raflar şeklinde tasarlanmıştır ve her rafta bir değişken ya da veri saklanmaktadır. RAM bellekteki her rafın bir adresi vardır. Her veri belli bir adrese sahip rafa koyulur ve daha sonra gerektiğinde bu adresten/raftan alınır.

Pointer Tanımlama

Bir pointer tanımlamak için değişkenin önüne (*) karakteri konulur ve aşağıdaki kalıp kullanılır:

Örnek:

Bir değişkenin adresini bir pointer’a atarsak pointer’ı kullanarak yaptığımız bütün işlem ve değişiklikler değişkenimizin sahip olduğu değeri etkiler.

Örnek olarak bir değişkenin RAM bellekteki adresini bir pointer’a atayalım:

Not: RAM bellek adresleri string bir değer olduğu için pointer’lar sadece char tipinde tanımlanabilirler.

Pointer Aritmetiği & Diziler

Pointer’lar, matematiksel işlemlerde veya karşılaştırma işlemlerinde kullanılabilir. Pointer’ların değerini arttırıp azaltarak değişik işlemler yapılabilir.

Örneğin g pointer’ının değerinin I olduğunu düşünelim, bir sonraki bellekte de S değeri olsun, Eğer bellekte bir sonraki adrese gitmek istiyorsak g++; komutunu kullanabiliriz.

Dizilerle Çalışmak

Eğer pointer’ın aritmetik özelliklerini kullanırsak dizi elemanları ile ilgili değişik işlemler yapabiliriz. Aşağıdaki tabloyu incelereseniz ne demek istediğimi daha iyi anlayacaksınız. Burada harfler adlı pointer &harfler[0] elemanının adresini barındırır. Tabloda listelenen diğer ifadeler de aynı değerleri taşır.

Yukarıdaki tabloya göre harfler değişkeni &harfler[0] elemanının adresini taşıyorsa *harfler pointer’ı harfler[0] elemanının değerini taşıyor demektir. Yani aşağıdaki gibi bir genelleme yapabiliriz:

Kapanış

Bir sonraki yayınımda C dilinde sayısal ve sözel fonksiyonlara değinmeyi planlıyorum. İyi günler dilerim.

İlgili Makaleler

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu