CodeBlanks Logo Icon CodeBlanks

Struct ve fonksiyon

Struct'ı fonksiyona değerle ve referansla geçmeyi öğrenirsin.

Struct'ı fonksiyona geçmek

Bir struct değişkenini fonksiyona parametre olarak geçebilirsin. Değerle geçişte fonksiyon yapının bir kopyasını alır; dolayısıyla özgün değişken değişmez.

void printPoint(Point p) {
    cout << p.x << ", " << p.y;
}

Burada printPoint bir Point alır ve üyelerini yazdırır. Çağrı printPoint(p); biçiminde yapılır. Değerle geçiş küçük yapılar için uygundur; büyük yapılarda kopyalama maliyetinden kaçınmak için referans kullanılır.

Referansla geçiş

Büyük yapılarda kopyalama maliyetinden kaçınmak için referansla geçiş kullanılır. Parametre türünün yanına & eklersin; bu sayede fonksiyon özgün yapıyı doğrudan görür.

void move(Point& p) {
    p.x += 1;
    p.y += 1;
}

Burada p referans olduğu için p.x += 1 özgün yapının x üyesini değiştirir. Yapının değişmesini istemiyorsan const Point& kullanırsın; hem kopyalamaz hem de korur.

Uygulama printPoint fonksiyonu yaz

void printPoint(Point p) adında bir fonksiyon tanımla; cout << p.x << " - " << p.y << endl; satırıyla üyeleri yazdırsın. main içinde Point p; p.x = 3; p.y = 4; tanımla ve printPoint(p); çağrısı yap.

Başlangıç kodu

main.cpp
#include <iostream>
using namespace std;

struct Point {
    int x;
    int y;
};

// printPoint fonksiyonunu tanımla

int main() {
    // Point p; tanımla, üyelere değer ata, fonksiyonu çağır
    return 0;
}

Örnek çözüm

main.cpp
#include <iostream>
using namespace std;

struct Point {
    int x;
    int y;
};

void printPoint(Point p) {
    cout << p.x << " - " << p.y << endl;
}

int main() {
    Point p;
    p.x = 3;
    p.y = 4;
    printPoint(p);
    return 0;
}

Beklenen çıktı

3 - 4

Soru ve cevaplar

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

1 Bir yapıyı büyük yapıda kopyalamadan geçirmek için ne kullanılır?

  • referans Doğru cevap
  • türetilmiş tür
  • sabit
  • değerle geçiş

Açıklama: Referans, yapıyı kopyalamadan geçirmeyi sağlar.

2 Boşluğu doldur: referans parametresi

Soru
void move(Point____ p) {
    p.x += 1;
}
Cevap
void move(Point& p) {
    p.x += 1;
}

Açıklama: & işareti referans parametresi belirtir.

3 Geçiş türünü özelliğiyle eşleştir

Kavram Anlamı
değerle kopya oluşturur
referansla özgünü değiştirebilir
const referans kopyalamaz ve korur

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