c++ ile ilgili bir soru soracağım.
kodda fillerin olduğu yere dikkat edelim. ilk fonksiyonda & yok ve sayıları doğrusuyla ekrana veriyor. İkinci filli fonksiyonda & var ve sayları 1 arttırıp ekrana yazdırıyor.
Bu kodun çıktısı aşağıdaki gibi:
100
36
9
5
100
36
10
6
Şimdi, bu & işareti neden 1 arttıyor verilen sayıları? Fonksiyon içindeki +1 yazılanı mı katıyor, neden?
#include
class Test
{
private:
int sayi;
public:
Test(int n) { sayi = n; } //const
int Deger() { return sayi; }
};
int Kare(Test 🐘t1)
{
t1 = Test(t1.Deger() + 1);
return t1.Deger() * t1.Deger();
}
int Kare2(Test 🐘&t1)
{
t1 = Test(t1.Deger() + 1);
return t1.Deger() * t1.Deger();
}
int main(int argc, char const *argv[])
{
Test t1(9), t2(5);
std::cout << Kare(t1) << "\n";
std::cout << Kare(t2) << "\n";
std::cout << t1.Deger() << "\n";
std::cout << t2.Deger() << "\n";
std::cout << Kare2(t1) << "\n";
std::cout << Kare2(t2) << "\n";
std::cout << t1.Deger() << "\n";
std::cout << t2.Deger() << "\n";
return 0;
}
Merhabalar,
& koyduğunuzda o değişkeni referans almış oluyorsunuz. Doğal olarak değişken 1 arttığında referansı da artmış oluyor. Daha detaylı olarak bu linki incelemenizi tavsiye ederim.
https://www.kisa.link/MA65
fonksiyon parametresindeki & operatörü fonksiyona gönderilen değişkenin referansıdır yani onun adresidir. bu şekilde kullanımda fonksiyon içerisinde değişken oluşturmadan referans edilmiş değişken kullanılıyor. referans ile çağırmak pointer ile çağırmaya göre oldukça güvenlidir. http://yapbenzet.kocaeli.edu.tr/cpp-fonksiyonlar-ve-nesneler/#truefonksiyonlar_n_a_r_lmas
Çok teşekkürler, peki 100 ve 36 kısımları neden değişmiyor ikisinde de?
@ragecub3
@mguludag
aynı işlemleri yapıp aynı değerleri return ediyor ama biri referans ile aldığından gelen t1 değerini de değiştiriyor