CodeBlanks Logo Icon CodeBlanks

Özet - İşaretçi temelleri

&, * ve nullptr'yi birleştirerek bir takas fonksiyonu yazarsın.

Özet - İşaretçi temelleri

Bu grupta işaretçilerin temel araçlarını öğrendin: tanımlama, & ile adres alma, * ile değere erişme, nullptr ile boş durum ve işaretçi aritmetiği. İşaretçiler, C++'ın düşük seviyeli gücünü açar.

İki ödev var. Birincisi, iki işaretçi parametreli bir swap fonksiyonu yazacaksın. İkincisinde, işaretçi aritmetiğiyle bir dizinin elemanlarını toplayacaksın. Her ikisi de öğrendiklerini birleştirir.

Uygulama swap(int*, int*) fonksiyonu

void swap(int* a, int* b) fonksiyonunu tanımla; gövdede bir int t geçici değişkeni ile *a ve *b'yi değiştir. main içinde int x = 5, y = 9; tanımla, swap(&x, &y) çağır, x ve y'yi aynı satırda boşlukla yazdır.

Başlangıç kodu

main.cpp
#include <iostream>

// swap fonksiyonunu tanımla

int main() {
    // x ve y değişkenlerini tanımla
    // swap çağrısı ekle
    // x ve y'yi yazdır
    return 0;
}

Örnek çözüm

main.cpp
#include <iostream>

void swap(int* a, int* b) {
    int t = *a;
    *a = *b;
    *b = t;
}

int main() {
    int x = 5, y = 9;
    swap(&x, &y);
    std::cout << x << " " << y << "\n";
    return 0;
}

Beklenen çıktı

9 5

Uygulama İşaretçi ile dizi toplamı

int arr[] = {2, 4, 6}; tanımla. int* p = arr; ile başla. int sum = *p + *(p + 1) + *(p + 2); yazarak üç elemanı topla. sum'u std::cout ile yazdır.

Başlangıç kodu

main.cpp
#include <iostream>

int main() {
    // Diziyi tanımla
    // p'yi diziye bağla
    // İşaretçi aritmetiğiyle topla
    // Toplamı yazdır
    return 0;
}

Örnek çözüm

main.cpp
#include <iostream>

int main() {
    int arr[] = {2, 4, 6};
    int* p = arr;
    int sum = *p + *(p + 1) + *(p + 2);
    std::cout << sum << "\n";
    return 0;
}

Beklenen çıktı

12

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
void swap(int* a, int* b) {
    int t = *a;
    *a = *b;
    *b = t;
}
int main() {
    int x = 5, y = 9;
    swap(&x, &y);
    std::cout << x << " " << y;
    return 0;
}
  • 5 9
  • 5 5
  • 9 5 Doğru cevap
  • Hata

Açıklama: swap(&x, &y) x ve y'nin değerlerini değiştirir.

2 swap çağrısı

Soru
swap(____, &y);
Cevap
swap(&x, &y);

Açıklama: swap(&x, &y) x ve y'nin adreslerini geçirir.

3 İşaretçi araçlarını eşle

Kavram Anlamı
int* p İşaretçi tanımı
&x Adres al
*p Değere eriş
p + 1 Sonraki eleman

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