Sobes.tech
Junior

Referans ile aktarım nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Referans ile iletim (pass by reference), bir fonksiyona, veri saklayan bellek alanının adresinin (referansın) iletildiği bir mekanizmadır. Sonuç olarak, fonksiyon içinde yapılan herhangi bir değişiklik, fonksiyon dışındaki orijinal değişkene yansır.

Ana özellikler:

  • Bellek adresi iletilir, değer kopyası değil.
  • Fonksiyon doğrudan orijinal verilerle çalışır.
  • Fonksiyon içindeki değişiklikler, fonksiyon tamamlandıktan sonra da kalır.
  • Birçok programlama dilinde nesneler, diziler ve diğer referans türleri için geçerlidir.
  • Bazı dillerde (örneğin, C++), göstericiler veya referanslar kullanılarak primitif türler açıkça referansla geçirilebilir.

Python'da kod örneği:

# Liste aktarımı (referans tipi)
def modify_list(my_list):
    my_list.append(4) # Orijinal listeyi değiştirir

data = [1, 2, 3]
modify_list(data)
print(data) # [1, 2, 3, 4] yazdırır

# Sayı aktarımı (primitif tip - Python'da değer ile geçiş)
def modify_number(my_number):
    my_number += 1 # Yerel kopya oluşturulur ve değiştirilir

value = 5
modify_number(value)
print(value) # 5 yazdırır - orijinal değer değişmedi

C++ örneği:

#include <iostream>

// Referans ile iletim
void modify_value_ref(int &val) {
    val += 10; // Orijinal değişkeni değiştirir
}

// Değer ile iletim (karşılaştırma için)
void modify_value_copy(int val) {
    val += 10; // Yerel kopyayı değiştirir
}

int main() {
    int a = 5;
    modify_value_ref(a);
    std::cout << "Referans sonrası: " << a << std::endl; // 15 yazdırır

    int b = 5;
    modify_value_copy(b);
    std::cout << "Kopya sonrası: " << b << std::endl; // 5 yazdırır

    return 0;
}

Avantajlar:

  • Büyük veri hacimleriyle çalışırken etkilidir, çünkü kopyalama gerekmez.
  • Fonksiyonların, argümanlar aracılığıyla birden fazla değeri değiştirmesine izin verir.

Dezavantajlar:

  • Fonksiyon, isim veya belge içinde açıkça belirtilmediği sürece, argümanları değiştirdiğinde kodun tahmin edilmesini zorlaştırabilir.
  • İstenmeyen yan etkileri önlemek için dikkatli olunmalıdır.