Tavsiye, 2024

Editörün Seçimi

İşaretçi ve Referans Arasındaki Fark

“Pointer” ve “reference” her ikisi de başka bir değişkeni işaret etmek veya yönlendirmek için kullanılır. Ancak, ikisi arasındaki temel fark, bir işaretçi değişkeninin, bellek konumu içinde depolanan bir değişkene işaret etmesidir. Başvuru değişkeni, kendisine atanmış bir değişken için bir takma addır. Aşağıdaki karşılaştırma tablosu, bir işaretçi ve referans arasındaki diğer farkları incelemektedir.

Karşılaştırma Tablosu

Karşılaştırma için temelIşaretçiReferans
Temelİşaretçi, bir değişkenin hafıza adresidir.Referans, bir değişken için bir takma addır.
İadeİşaretçi değişkeni, '*' işaretçi işaretinden önce gelen işaretçi değişkeninde depolanan adreste bulunan değeri döndürür.Referans değişkeni, '&' referans işaretinden önce gelen değişkenin adresini döndürür.
Operatörler*, ->&
Boş Referansİşaretçi değişkeni NULL'a başvurabilir.Referans değişkeni asla NULL'a atıfta bulunamaz.
BaşlatmaBaşlatılmamış bir işaretçi oluşturulabilir.Başlatılmamış bir referans hiçbir zaman oluşturulamaz.
Başlatma Zamanıİşaretçi değişkeni programda herhangi bir zamanda başlatılabilir.Referans değişken yalnızca oluşturulduğu sırada başlatılabilir.
reinitializationİşaretçi değişkeni, gerektiği kadar yeniden başlatılabilir.Referans değişken, programda bir daha asla yeniden başlatılamaz.

Pointer'un tanımı

Bir “pointer”, başka bir değişkenin hafıza konumunu tutan bir değişkendir. İşaretçi değişkeni tarafından kullanılan işleçler * ve -> 'dir. İşaretçi değişkeni bildirimi, '*' işaretini ve değişken adını izleyen temel veri türünü içerir.

 type * var_name; 

İşaretçiyi bir örnek yardımıyla anlayalım.

 int a = 4; int * ptr = & a; cout < 

Burada, a tamsayı değişkenine ve a değişkeninin adresini saklayan ptr işaretçi değişkenine sahibiz.

İşaretçi Aritmetik

İşaretçi değişkeni, "toplama" ve "çıkarma" olan iki aritmetik işleçle çalıştırılabilir. Ekleme, “artış” olarak adlandırılır ve çıkarma, “azalma” olarak adlandırılır. Bir işaretçi değişkeni arttıkça, taban türünün bir sonraki değişkeninin bellek konumunu işaret eder. Bir işaretçi değişkeni azaldıkça, baz türünün önceki değişkeninin bellek konumuna işaret eder. Dolayısıyla, bir diziye bir işaretçi değişkeni tarafından verimli bir şekilde erişilebilir.

Birden çok dolaylı

Bir işaretçi, hedef değeri gösteren diğer işaretçi değişkenine işaret eder. Bu tür bir işaretçi her zaman başka bir işaretçi değişkeninin adresi ile başlatılır. Bir işaretçinin bir işaretçiye bildirimi şöyledir.

 tip ** var_name; 

Bunu bir örnekle inceleyelim.

 int a = 4; int * ptr1 = & a; int ** ptr2 = & ptr1; cout < 

İşlev işaretçisi

Bir işlevin bir değişken olmadığını bildiğimiz gibi, yine de bir işaretçi değişkenine atanabilen bir bellek konumuna sahiptir. Bir işaretçi bir işlevi işaret ettiğinde, o işlev işaretçisi ile işlev çağrılabilir.

İşaretçi hakkında hatırlanması gereken önemli noktalar.

  • İşaretçi değişkeni başlatma olmadan oluşturulabilir ve programın herhangi bir yerinde başlatılabilir.
  • İşaretçi değişkeni, başka bir değişkene yeniden başlatılabilir.
  • İşaretçi değişkeni NULL'a başvurabilir.

Referans Tanımı

Referans değişken, bu referans değişkene atanan değişkeni ifade etmek için kullanılır. Referans değişken tarafından kullanılan operatör '&' şeklindedir. Bir referans değişkeni bildirimi, baz türünü, ardından '&' işaretini ve ardından değişken adını içerir.

 type & refer_var_name = var_ name; 

Burada tür, veri tipidir ve & işleci bunun bir referans değişkeni olduğunu onaylar. Refer_var_name, başvuru değişkeninin adıdır. Var_name, başvuru değişkeninin başvurmasını istediğimiz değişkenin adıdır.

Referans değişkenini bir örnek yardımıyla anlayalım.

 int a = 4; int & b = a; // b, ab = 6; // şimdi a = 6 

Burada, int türündeki değişkene 4 değeri atanır. Referans değişkenine a değişkenine atanır, yani b, a'nın diğer adıdır. Şimdi, b'ye başka bir değer atadığımızda, a'nın değerini değiştiririz. Bu nedenle, bir referans değişkeninde yapılan değişikliklerin, bu referans değişken tarafından belirtilen değişkende de olacağı söylenebilir.

En önemli nokta, referans değişkeninin oluşturulduğu sırada başlatılması gerektiğidir. Referans değişken bir değişkenle başlatıldığında, başka bir değişkeni belirtmek için yeniden başlatılamaz. Bir referans değişkenine değer atadığınız an, bu değeri bir referans değişkeninin işaret ettiği değişkene atarsınız. Referans değişkeni asla NULL'a atıfta bulunamaz. Bir referans değişkeninde aritmetik işlem yapılamaz.

Referans değişkeni üç şekilde kullanılabilir:

  • İşlev olarak dönüş değeri.
  • Bir fonksiyon parametresi olarak.
  • Tek başına referans olarak.

İşaretçi ve Referans Arasındaki Temel Farklılıklar

  1. Referans, bir değişkeni belirtmek için başka bir isim oluşturmak gibidir, böylece farklı isimlerle de belirtilebilir. Öte yandan, bir işaretçi sadece bir değişkenin hafıza adresidir.
  2. Önceden belirtilirse '*' ile işaretçi değişkeni, adresi işaretleyicide saklanan değişkenin değerini döndürür. '&' İle önceden işaretlendiğinde bir başvuru değişkeni, bu değişkenin adresini döndürür.
  3. İşaretçi operatörleri * ve -> iken, referans operatörü & dir.
  4. Bir göstergenin değişkeni herhangi bir değişkenin adresini taşımazsa boşa işaret eder. Öte yandan, bir referans değişkeni asla Null'a atıfta bulunamaz.
  5. Her zaman birimselleştirilmiş bir işaretçi değişkeni oluşturabilirsiniz, ancak bazı değişkenlerin diğer adlarına ihtiyaç duyduğumuzda bir referans oluştururuz, böylece asla birimselleştirme yansıması oluşturamazsınız.
  6. Bir işaretçiyi yeniden başlatabilirsiniz, ancak bir kez başlattıktan sonra bir kez daha yeniden başlatamazsınız.
  7. Boş bir işaretçi oluşturabilir ve istediğiniz zaman başlatabilirsiniz, ancak yalnızca bir refernce oluştururken refrence değerini başlatmanız gerekir.

Not:

Java işaretçileri desteklemiyor.

Sonuç

İşaretçi ve referans her ikisi de başka bir değişkeni işaret etmek veya yönlendirmek için kullanılır. Ancak her ikisi de kullanımları ve uygulamalarında farklılık gösterir.

Top