Pointerlar ve Referanslar Arasındaki Farklar

Merhaba bugün Pointer Referans farkı nedir? detaylı olarak buna değinmeye çalışacağım. Daha önceki yazılarımda Pointer Nedir?, Referanslar Nedir? Makalelerinde her ikisine de yer verip örneklerle bahsetmiştim. Bugün Pointer vs Referans gibi bir karşılaştırma yapıp örneklerle konuyu pekiştirelim.

Kısaca Pointer (İşaretçiler)

Herhangi bir obje örneğin int tipinde bir değişken oluşturduğumuzu düşünelim. Bellekte bu değişken için bir yer ayrılır ve bu yerin bir adresi olur. Pointerlar ile bu adresleri tutup üzerinde işlemler yaparız.

Peki Neden: Dinamik bellek yönetimi için gerekli bir olaydır. Kopya değişkenler oluşturmaya gerek kalmadan tasarruflu şekilde bellek adreslerini kullanarak işlemler yapabilmemizi sağlar.

Kısaca Referanslar

Daha önce oluşturduğumuz herhangi bir objenin referansını oluşturarak o objeden kopyalar oluşturmaya gerek kalmadan, referansı üzerinden işlemler yapmamıza olanak sağlar. Referanslar C++ diliyle gelmiştir. C dilindeki Pointerların işlevini görür. Kısaca bir objenin eşsiz kopyasıdır diyebiliriz.

Pointer vs Referans

  • Referanslara direkt değişkenin değerini atarken, Pointerlara değişkenin adres değerini atıyoruz.
  • Referanslar kullanımı kolay ve daha güvenli bir tiptir. Pointerlar kafa karışıklığı yapar ve bellek üzerinde riskli işlemlere girmemize neden olabilir.
  • Referansın değerinin tanımlandığı yerde atanması gerekiyor. Fakat Pointerda dilediğimiz zaman değer ataması yapabiliriz.
  • Referansın Referansı diye bir kavram yok. Pointer’in Pointeri kavramları bulunmakta ve konu oldukça karmaşıklaşmakta.
  • Pointer dilendiği kadar yeniden atanabilir. Fakat Referans başlatılma anında atandığı için ilgili nesneye ait olur.
  • Pointer NULL olabilir, referans olamaz.
  • Referanslar arka planda Pointerlar üzerinden işlemler yapılarak sağlanır. Bir nevi referans kullanırken pointer kullanmış oluyoruz.

Performans Farkları

Bu anlattıklarıma bakarak Pointerların daha performanslı olacağını sanıyorsanız yanılıyorsunuz. Çünkü ikisi de aynı performans değerlerine sahiptir. Hatta bazı noktalarda Referanslar daha çok avantaj sağlayacaktır. Hemen aşağıdaki örneğe bakabilirsiniz.

Hangisi Ne Zaman Kullanılır?

Her ikisinin birbiri yerine kullanılabildiği durumlarda performansları tamamen aynıdır. Ayrıca daha kolay olması nedeniyle Referanslar kullanılabildiği her yerde kullanılmalıdır. Genel olarak fonksiyon parametrelerinde ve dönüş tiplerinde referans tercih edilir.

Pointer Aritmetiği, Linked List, Tree gibi yapıların kullanılacağı durumlarda Pointer tercih edilmelidir. Bu tarz yapılarla birilikte referans kullanımı uygun değildir.

Bugün elimden geldiğince Pointer Referans farkı nedir? Buna değinmeye ve örneklemeye çalıştım. Umarım sizler için faydalı olmuştur. Takıldığınız yerleri çekinmeden sorabilirsiniz sağlıklı günler dilerim.

4 yorumlar

  1. merhaba
    performans farkı başlığındaki kodun 25. satırında fonksiyon sayi2 değil de &sayi2 olmalı. compiler hata veriyordu pointerlaDegerDegistir(sayi2); olarak çalıştırdığımda kodum compile oldu.

    • Merhaba, bu minik hata gözümden kaçmış bildirdiğiniz için teşekkürler tarafımca düzeltilmiştir. İyi çalışmalar dilerim.

  2. muhtesem bir anlatim olmus ellerinize saglik

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir