CodeBlanks Logo Icon CodeBlanks

İşaretçi aritmetiği

İşaretçi üzerinde + ve - ile aritmetik yapmayı öğrenirsin.

İşaretçi aritmetiği

İşaretçiler üzerinde + ve - ile aritmetik yapılabilir. Bir işaretçiye +1 eklemek, bir sonraki elemana ilerler; türün boyutu kadar adım atar. Örneğin int* p üzerinde p + 1 yazarsan, p bir int boyutu kadar ilerler.

Bu özellik, dizileri gezmek için kullanışlıdır. Bir dizinin adı, ilk elemanın adresidir; int* p = arr; ile başlayıp *(p + 1), *(p + 2) ile elemanlara erişebilirsin. Bu, arr[1] yazmakla aynı anlama gelir.

Dizi ve işaretçi bağlantısı

Bir dizinin adı, ilk elemanın adresi olarak yorumlanır. arr ile &arr[0] aynı anlama gelir. Bu yüzden int* p = arr; yazabilirsin; p artık dizinin başını gösterir.

arr[i] aslında *(arr + i)'nin kısayoludur. Yani indeksleme, işaretçi aritmetiği ve dereference işleminin birleşimidir. Bu bağlantı, C++'ın düşük seviyeli doğasını yansıtır; ama günlük kodda arr[i] yazmak daha okunaklıdır.

Uygulama İşaretçi ile dizi gez

int arr[] = {10, 20, 30}; tanımla. int* p = arr; ile p'yi dizinin başına bağla. *(p + 1) ile ikinci elemanı std::cout ile yazdır.

Başlangıç kodu

main.cpp
#include <iostream>

int main() {
    // Diziyi tanımla
    // p'yi diziye bağla
    // İkinci elemanı yazdır
    return 0;
}

Örnek çözüm

main.cpp
#include <iostream>

int main() {
    int arr[] = {10, 20, 30};
    int* p = arr;
    std::cout << *(p + 1) << "\n";
    return 0;
}

Beklenen çıktı

20

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Bu kodun çıktısı nedir?

main.cpp
int arr[] = {10, 20, 30};
int* p = arr;
std::cout << *(p + 1);
  • 10
  • 20 Doğru cevap
  • 0
  • 30

Açıklama: *(p + 1) dizinin ikinci elemanını verir; o da 20'dir.

2 İfadeyi anlamına eşle

Kavram Anlamı
p + 1 Sonraki eleman
*(p + 1) İkinci değer
arr Dizi adı
int* p = arr Bağlama

3 İşaretçi aritmetiği

Soru
std::cout << *(p ____ 1);
Cevap
std::cout << *(p + 1);

Açıklama: *(p + 1) p'den bir sonraki elemana erişir.

Başlangıç bölümündeki tüm dersler