====== Fonksiyonlar ====== ===== Fonksiyon Parametreleri ve Argümanları ===== **Fonksiyon parametresi** fonksiyon başlığında kullanılan değişkendir. Fonksiyonun içerisinde tanımlanan bir değişken ile aynı şekilde çalışır. Tek farkı fonksiyon çağrısında verilen değerler ile **başlatılırlar**. void doSomething(int x, int y){ std::cout< **Argüman** ise fonksiyon çağrısında fonksiyona verilen değerlerdir. doSomething(5, 6); ==== Değer ile Çağırma ==== Bir fonksiyon çağırıldığında; * Fonksiyonun parametreleri değişken olarak oluşturulurlar. * Argümanların değerleri bu değişkenlere **kopyalanır**. Bu şekilde fonksiyon çağırmaya **değer ile çağırma** denir. ==== Referans ile Çağırma ==== Referanslar hakkında bilgilerinizi tazelemeniz gerekiyorsa, [[tr:cs:cpp:common:reference|referanslar]] sayfasına bakınız. Standart kütüphanede bulunan sınıfsal tipler değer ile çağırma için uygun değildir. Çünkü bu tiplerin kopyalanması maliyetlidir. Fonksiyon parametresinde referans kullanırsak, fonksiyon çağırıldığında, bu referanslar uygun argümanlara bağlanır. Yeni bir nesne oluşturulmaz. void printValue(std::string& y) // tip std::string& olarak değiştirildi { std::cout << y << '\n'; } // y burada yok edildi int main() { std::string x { "Hello, world!" }; printValue(x); // x şimdi referans olarak y referans parametresine geçirilir (ucuz) return 0; } Referans ile çağırma, fonksiyon her çağrıldığında bu argümanların kopyalarını oluşturmadan argümanları bir fonksiyona aktarmamızı sağlar. Referans ile çağırma, bize argüman üzerinde işlem yapmamıza olanak sağlar. Değer ile çağırmada kopyalama gerçekleştiğini biliyoruz. Bu nedenle fonksiyonun içerisinde yapılan değişiklikler argümanı etkilemez. Referans ile çağırmada ise argümanın kendisi fonksiyona aktarıldığı için fonksiyon içerisinde yapılan değişiklikler argümanı etkiler. Elbette referansımız ''const'' olmamalıdır. Çünkü fonksiyon içerisinde argüman üzerinde değişiklik yapmak istiyoruz. void addOne(int& y) // y gerçek nesne x'e bağlıdır { ++y; // bu, gerçek x nesnesini değiştirir } int main() { int x { 5 }; std::cout << "value = " << x << '\n'; addOne(x); std::cout << "value = " << x << '\n'; // x değiştirildi. return 0; } [[tr:cs:cpp:common:function|UCH Viki]]'den alınmıştır. https://wiki.ulascemh.com/doku.php?id=tr:cs:cpp:common:function