• Web sitemizin içeriğine ve tüm hizmetlerimize erişim sağlamak için Web sitemize kayıt olmalı ya da giriş yapmalısınız. Web sitemize üye olmak tamamen ücretsizdir.
  • Sohbetokey.com ile canlı okey oynamaya ne dersin? Hem sohbet et, hem mobil okey oyna!
  • Soru mu? Sorun mu? ''Bir Sorum Var?'' sistemimiz aktiftir. Paylaşın beraber çözüm üretelim.

Adres Aritmetiği

Üyelik Tarihi
7 Ocak 2015
Konular
4,091
Mesajlar
4,274
MFC Puanı
40
Merhaba,

Bu anlatımım da adres aritmetiği üzerinde durmak istiyorum.

C dilinin güçlü özelliklerinden olan işaretçiler(pointer) üzerinde operatörler ile yapılan işlemleri adres aritmetiği olarak adlandırabiliriz.

Örneğin p adında bir işaretçimiz olsun, p++ işlemi p işaretçisini bir sonraki elemanı gösterecek şekilde arttırır, p += i ise p’nin o anki konumundan i kadar ötedeki elemanı gösterir. Bunlar adres aritmetiğinin en basit biçimleridir.

p ve q adında 2 adet aynı dizinin farklı yerlerini gösteren işaretçilerimiz olsun. p ve q arasında ==, =,<,>,>=,<= operatörlerini çalıştırabiliriz. Örneğin;

p == q

testi, p işaretçisi q işaretçisine eşitse doğrudur. Aynı dizinin elemanlarını göstermeyen işaretçilerde bu gibi operatörler kullanılmaz. Bir istisna olarak bir dizinin en son elemanından sonra gelen ilk eleman işaretçi aritmetiğinde kullanılabilir. Örnek olarak girilen string’in uzunluğunu bulan bir program yazalım;

Y53v7k.png


programda p işaretçisi s’nin ilk değerini gösterilecek şekilde ayarlandı. p dosya sonuna gelene kadar(\\0) while döngüsü dönmeye başladı ve her \\0 karakterini görmediğinde p işaretçisini bir sonraki elemanı gösterecek şekilde arttırıyor. Döngü bittiğinde ise p işaretçisinin gösterdiği son değerden, s işaretçisinin gösterdiği ilk değerden çıkartılıyor ve böylece uzunluk geri döndürülmüş oluyor.

Geçerli işaretçi işlemleri; aynı türdeki işaretçilerin birbirine atanması(=), bir işaretçinin tamsayı ile toplanması ya da işaretçi ve tamsayının birbirinden çıkarılması, aynı dizinin elemanlarını gösteren işaretçilerin karşılaştırılması(==) dışında yapılan işlemler geçersiz olur. Yani çarpma, bölme, virgüllü sayılarla toplamak geçersizdir.
 
Üst