Bu yazıda C++ işaretçi aritmetiğinden bahsedeceğiz. C++ işaretçi aritmetiğine izin veren bir dildir. Bir işaretçi artırılabilir, azaltılabilir, bir sayıyla toplayabilir, bir sayı çıkartılabilir veya bir işaretçiyi başka bir işaretçiden çıkartılabiliriz. Ancak bu işaretçi aritmetiği sabit boyutlu dizi elemanlarını işaret eden işaretçiler için uygundur.
Şimdi daha iyi anlayabilmek için öncelikle bir dizi tanımlayalım.
int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
Tanımladğımız bu 10 elemanlı dizinin adresini bir işaretçiye atayalım.
int * arrPtr = &arr[ 0 ];
Atadığımız bu işaretçiyi ekrana yazdırdığımızda ve bu işaretçiyi referanstan kurtarıp ekrana yazdırdığımızda ekrana yazılan değerlere bakalım.
std::cout << arrPtr << "\n"; // print 0x7ffca4137720
std::cout << *( arrPtr ) << "\n"; // print 1
Ekrana hem adresini hem de ilk değerini yazdırmış olduk. Peki şimdi arrPtr+2 yaptığımızda nasıl bir sonuç alırız?
std::cout << arrPtr+2 << "\n"; // print 0x7ffca4137728
std::cout << *( arrPtr+2 ) << "\n"; // print 3
Bu sefer ekrana 3 ve 0x7ffca4137728 yazdı. Buradan çıkartacağımız sonuç aslında arrPtr+2 demek arrPtr+2*4 demek oluyor.
Şimdi tanımladğımız iki işaretçiyi birbirinden çıkartmayı deneyelim.
int * arrPtr = &arr[ 0 ];
int * arrPtr2 = &arr[3];
std::cout << arrPtr << "\n"; // print 0x7ffca4137720
std::cout << arrPtr+2 << "\n"; // print 0x7ffca4137728
std::cout << arrPtr2-arrPtr << "\n"; // print 3
Bu sefer ekrana 3 yazdı. Bu işlem bize arrPt2 den arrPtr’a kadar saklanan elemanların sayısını verir.
İşaretçi aritmetiği üzerinde anlatılabilecekler kısaca bu kadardır. İşaretçiler hakkında daha detaylı bilgiler öğrenmek için diğer yazıları takip edebilirsiniz.