Adres Aritmetiği

Kurtbeyi

Misafir Editör
Katılım
5 Şubat 2022
Mesajlar
501
Tepkime puanı
44
Konum
istanbul
Cinsiyet
  1. Bay
Takım
Fenerbahçe
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 pnin 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 stringin uzunluğunu bulan bir program yazalım;

Y53v7k.png



programda p işaretçisi snin 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.
 
İçerik sağlayıcı "paylaşım" sitelerinden biri olan Harbimekan.Com Forum, Eğlence ve Güncel Paylaşım Platformu Adresimizde 5651 Sayılı Kanun’un 8. Maddesine ve T.C.K’nın 125. Maddesine göre TÜM ÜYELERİMİZ yaptıkları paylaşımlardan sorumludur. Harbimekan.Com sitesindeki konular yada mesajlar hakkında yapılacak tüm hukuksal Şikayetler için info@harbimekan.com yada iletişim sayfası üzerinden iletişime geçilmesi halinde ilgili kanunlar ve yönetmelikler çerçevesinde en geç 3 Gün (72 Saat) içerisinde Forum yönetimi olarak tarafımızdan gereken işlemler yapılacaktır.

Bu Site, Bilim ve Sağlık Haber Ajansı Üyesidir.

Yığıntı - 8kez - kaynak mağazam - Uğur Ağdaş