Mithr Mesaj tarihi: Ocak 21, 2009 Paylaş Mesaj tarihi: Ocak 21, 2009 geçen derse gidemedim ve hoca birkaç şey üzerine değinmiş.internette araştırdım fakat anlayamadım tam olarak ne anlama geldiklerini. call by value ile call by reference birde pass by value ile pass by reference kavramları anlamadığım şeyler.malum final haftasına gireceğiz vesaire. kısaca anlatabilecek arkadaşlar varmı acaba? teşekkürler. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mirage Mesaj tarihi: Ocak 21, 2009 Paylaş Mesaj tarihi: Ocak 21, 2009 Öncelikle pointer nedir biliyor olman lazım. Pointer biliyorsan http://www.cs.princeton.edu/~lworthin/126/precepts/pass_val_ref.html adresinde pass by value ile pass by reference farkını gayet iyi özetlemişler. Call ile pass eşanlamlı kullanılıyor bildiğim kadarıyla. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mithr Mesaj tarihi: Ocak 21, 2009 Konuyu açan Paylaş Mesaj tarihi: Ocak 21, 2009 pointer bilmiyorum malesef. vb'de falan görmemiştim,c'ye geçeli de fazla olmuyor :P teşekkürler yinede,bu adresi görmemiştim bir bakiyim Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mithr Mesaj tarihi: Ocak 21, 2009 Konuyu açan Paylaş Mesaj tarihi: Ocak 21, 2009 void swap ( int *px, int *py) { int t = *px; *px = *py; *py = t; } int main(void) { int a = 5; int b = 7; swap( &a, &b ); printf("a is %d and b is %dn", a, b); } mesela burada pointerlara a ve b değerini gönderiyoruz.*px ve *py sırayla a nın ve b nin yerini alıyor ve daha sonra değerlerini değiştiriyorlar kendi aralarında.ama main'de printfde biz a ve b yi yazdırıyoruz.pointerları yazdırmamız gerekmiyormu :P Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mirage Mesaj tarihi: Ocak 21, 2009 Paylaş Mesaj tarihi: Ocak 21, 2009 Öncelikle call by value ve call by reference'i anlaman için pointer'ları öğrenmen şart. http://www.cs.cf.ac.uk/Dave/C/node10.html iyi bir kaynağa benziyor. Ama tonlarca kaynak var pointer'lar hakkında. Mithr said: mesela burada pointerlara a ve b değerini gönderiyoruz. Hayır. Tam aksine fonksiyona a ve b değişkenlerinin adresini gönderiyorsun. Buna da call by reference deniyor. & operatörü bir değişkenin adresini verir. * operatörü bir adreste bulunan değeri verir. void swap ( int *px, int *py) { int t = *px; *px = *py; *py = t; } Burda swap fonksiyonun beklediği argümanlar int değeri değil, int türüne pointer. px dediği int türüne pointer *px ise o pointer'ın gösterdiği int değeri Yani fonksiyon şunu yapıyor: void swap ( int *px, int *py) { int t = *px; // px'in gösterdiği int değerini t'ye ata *px = *py; // px'in gösterdiği yere py'nin gösterdiği int değerini ata *py = t; // px'in gösterdiği int değerine t'yi ata } Burda px pointer'ı a değişkeninin adresi olduğu için, px'in gösterdiği int değeri ilk başta a'nın değeri. Yani fonksiyona a ve be'nin adresinlerini yolladın. Bu adresleri pointer olarak kullanarak a ve b'nin değerlerini değiştirmiş oldun. Pointer yerine a ve b'nin değerini bekleyen bir fonksiyon kullanarak (yani call by value ile) bu yaptığın şeyi yapmanın bir yolu yok. O yüzden swap fonksiyonu tipik örnek olarak verilir. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mithr Mesaj tarihi: Ocak 21, 2009 Konuyu açan Paylaş Mesaj tarihi: Ocak 21, 2009 harikasın çözdüm sdfs saol. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
aquila Mesaj tarihi: Ocak 21, 2009 Paylaş Mesaj tarihi: Ocak 21, 2009 pointerlari anlatan cizgi filmimsi bisey vardi, stop motionli da olabilir. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Fly Mesaj tarihi: Ocak 21, 2009 Paylaş Mesaj tarihi: Ocak 21, 2009 şey bir de, int ahmet=12; int &osman=ahmet; gibi şeyler görebilirsin, c++'da var bu olay, c'de yok, pointerdan farklı bir olay (alias yanlışım yoksa) ; osman diyince ahmet'in kendisi oluyor. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mirage Mesaj tarihi: Ocak 22, 2009 Paylaş Mesaj tarihi: Ocak 22, 2009 c++'da reference deniyor ona. edit: ahmet'in kendisi demişsin, biraz kafa karıştırabilir. Pointer ile aynı işlevi görüyor aslında. Reference kullanırken yine adresler ile çalışıyorsun. Yani fonksiyonu reference ile çağırırsan değişkenin değerini değil adresini veriyorsun (call by reference). Ama reference kullanımı pointer'lara göre daha basit. * ve & işaretleriyle uğraşmadığın için adres kullanımını gizlemiş oluyorsun. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Enzelna Mesaj tarihi: Ocak 22, 2009 Paylaş Mesaj tarihi: Ocak 22, 2009 Mirage said: void swap ( int *px, int *py) { int t = *px; *px = *py; *py = t; } pointer kullanmanın mantığı nedir ya da avantajları diyim. void swap ( int px, int py) { int t = px; px = py; py = t; } aynı işi görmezmi ? Not:pek bilgim yok sadece pointer mantığını anlamaya çalışıyorum. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mirage Mesaj tarihi: Ocak 22, 2009 Paylaş Mesaj tarihi: Ocak 22, 2009 Hayır görmez. Bir dene istersen. ;) a = 1; b = 2; swap(a, b); Swap fonksiyonunu bahsettiğin şekilde tanımlarsan ve yukardaki şekilde kullanırsan, fonksiyonu a ve b değişkenlerinin değerlerinin kopyası ile çağırırsın (call by value). Yani fonksiyon gövdesine girdiğinde px 1, py ise 2 oluyor. Ama px ve py değişkenlerinin ömrü fonksiyon sonunda bitiyor. Fonksiyon sonunda py'yi 1, px'yi ise 2 olarak değiştirmiş oluyorsun. Ama fonksiyon bitince py de px de çöpe atılıyor. a ve b ile ilgili hiç bir değişiklik yapmamış oluyorsun. İnternette yüzlerce kaynak varken baştan pointer anlatmak istemiyorum açıkcası. Özel bir soru varsa yardımcı olmaya çalışırız. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Enzelna Mesaj tarihi: Ocak 22, 2009 Paylaş Mesaj tarihi: Ocak 22, 2009 hmm anladım teşekkür ederim cevap için. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Öne çıkan mesajlar