DonanımHaber Mini sürüm 2 Ocak 2026 tarihi itibariyle kullanımdan kalkacaktır. Bunun yerine daha hızlı bir deneyim için DH Android veya DH iOS uygulamalarını kullanabilirsiniz.
KTÜ'nün 2012 final sorularınada şöyle bir soruya rastladım ve cevabıda 75 fakat ben 60 buluyorum.Acaba hatamının nerede hata yapıyorum
//ekran çıktısı ne olur int x=15; int fun(int y); void main() { printf("%d", (fun(x+x)+30)+x); } int fun(int y) { y=y+x; x=y-x; y=y-x; return y; }
fonksiyonun callı; fun((15+15)+30) return değeri; y. Fonksiyona gelen parametre değişkeni referans olmadığı için (bildiğim kadarıyla) üzerinde yaptığın değişiklikler işlemiyor. Fonksiyonun içinde yalnızca x değişiyor. Y değişseydi sonuç şöyle olurdu; y = 60 + 15 //y 75 oldu x = 75 - 15 //x 60 oldu y = 75 - 60 //y 15 oldu //return 15 Çıktı da 30 olurdu. Edit; Fonksiyon call'ını yanlış görmüşüm; fun(30) olacak Yani y 30 return değeri yine 30 print edilirken; 30 + 30 + 15
< Bu mesaj bu kişi tarafından değiştirildi welrocken -- 16 Kasım 2014; 10:44:35 >
x global olduğundan fonksiyon içerisinde değişir, y fonksiyon içerisinde değişir zira bir parametre fonksiyonun local variable'ı haline gelir, ama globalde bir anlamı yok.
x global olduğundan fonksiyon içerisinde değişir, y fonksiyon içerisinde değişir zira bir parametre fonksiyonun local variable'ı haline gelir, ama globalde bir anlamı yok.
fonksiyon içerisideki satırlarda y=y+x; burada y 45 olur x=y-x; burada x 30 olur y=y-x; burada y 15 olur
sonuçta fonksiyon global olan x'i 30'a set eder ve geriye 15 döner.
(fun(x+x)+30)+x satırında f(x) yerine 15, global x için de 30 koyarsak 15+30+30 ile 75 sonucu oluşur.
umarım faydalı olmuştur.
Güzel sallamışım bilmiyordum o şekilde çalışabildiğini (Şansa bala aynı sonucu aldım :D). İlk başta aklımı karıştıran şey şu olmuştu; fonksiyona parametre olarak bir sayı girildiğinde şöyle bir hal alıyordu; def : f(x)... call : f(1) daha sonra fonksiyonda herhangi bir yerde x'e assignment yapıldığında x ne ki? diye sorasım geliyordu. Linkteki olay tüm olayı oturttu. Teşekkürler paylaşım için
void Modify(int p, int * q, int * o) { p = 27; // passed by value - only the local parameter is modified *q = 27; // passed by value or reference, check call site to determine which *o = 27; // passed by value or reference, check call site to determine which } int main() { int a = 1; int b = 1; int x = 1; int * c = &x; Modify(a, &b, c); // a is passed by value, b is passed by reference by creating a pointer, // c is a pointer passed by value // b and x are changed return(0); }
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye Ol Şimdi DeğilÜye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.