Değere Göre Arama ile Referansla Arama Arasındaki Fark

İçindekiler:

Anonim

Programlama dillerinde işlevler iki şekilde çağrılabilir: Değere Göre Çağırma ve Referansla Çağırma olarak bilinir.

Bu eğitimde öğreneceksiniz,

  • Değer yöntemine göre çağrı nedir?
  • Referansla Arama yöntemi nedir?
  • Değer yöntemine göre çağrı örneği
  • Referans yöntemine göre çağrı örneği
  • Değere Göre Arama - Referansla Arama
  • Değer yöntemine göre Çağrı kullanmanın avantajları
  • Çağrı yöntemini referans yöntemiyle kullanmanın avantajları
  • Call by value yöntemini kullanmanın dezavantajları
  • Çağrı yöntemini referans yöntemiyle kullanmanın dezavantajları

Değere Göre Çağrı yöntemi nedir?

Değere göre çağrı yöntemi, bir bağımsız değişkenin değerini o işlevin biçimsel parametresine kopyalar. Bu nedenle, ana işlevin parametresinde yapılan değişiklikler bağımsız değişkeni etkilemez.

Bu parametre geçirme yönteminde, gerçek parametrelerin değerleri işlevin biçimsel parametrelerine kopyalanır ve parametreler farklı bellek konumlarında saklanır. Dolayısıyla, işlevler içinde yapılan herhangi bir değişiklik, arayanın gerçek parametrelerine yansıtılmaz.

ANAHTAR FARK

  • Değere göre çağrı yönteminde orijinal değer değiştirilmez, oysa referans yöntemine göre çağrı yönteminde orijinal değer değiştirilir.
  • Değere göre Çağır'da değişkenin bir kopyası iletilirken, Referansla çağrı'da bir değişkenin kendisi iletilir.
  • Değere göre Çağrıda, gerçek ve biçimsel argümanlar farklı bellek konumlarında oluşturulurken, Referansla Çağrıda, gerçek ve biçimsel argümanlar aynı bellek konumunda oluşturulacaktır.
  • Değere göre çağrı, C ++, PHP, Visual Basic NET ve C # gibi programlama dillerinde varsayılan yöntemdir, oysa Referansla Çağrı yalnızca Java dilini desteklemektedir.
  • Değere göre arama, değişkenler basit bir yöntem kullanılarak iletilirken Referansla Arama, değişkenlerin adresini saklamak için işaretçiler gerekir.

Referansla Arama yöntemi nedir?

Başvuru yöntemine göre çağrı, bir bağımsız değişkenin adresini biçimsel parametreye kopyalar. Bu yöntemde, adres, işlev çağrısında kullanılan gerçek argümana erişmek için kullanılır. Bu, parametrede yapılan değişikliklerin geçen bağımsız değişkeni değiştirdiği anlamına gelir.

Bu yöntemde bellek tahsisi, gerçek parametrelerle aynıdır. Fonksiyondaki tüm işlemler, gerçek parametrenin adresinde saklanan değer üzerinde gerçekleştirilir ve değiştirilen değer aynı adreste saklanacaktır.

Değere Göre Arama yöntemi örneği

void main() {int a = 10,void increment(int);Cout << "before function calling" << a;increment(a);Cout << "after function calling" << a;getch();void increment(int x) {int x = x + 1;Cout << "value is" << x;}

Çıktı:

before function calling 10value is 11after function calling 1-0

Çünkü 'a'in main ()' ile tanımlanan değişken, increment () 'x' değişkeninden farklıdır. Bu programda sadece değişken isimleri benzerdir, ancak hafıza adresleri farklıdır ve farklı hafıza yerlerinde saklanır.

Referansla Arama yöntemine örnek

Public static void(string args[]) {int a = 10;System.out.println("Before call Value of a = ", a);Void increment();System.out.println("After call Value of a = ", a);}Void increment(int x) {int x = x + 1;}

Çıktı:

Before call Value of a =10After call Value of a =11

Çünkü 'a' olarak tanımlanan değişken, main () 'deki' a 'değişkenine atıfta bulunuyor / bu değişkene işaret ediyor. Burada değişken adı farklıdır, ancak her ikisi de aynı bellek adres konumlarına işaret ediyor / referans veriyor.

Değere Göre Arama - Referansla Arama

Parametreler Değere göre ara Referansla arayın
Tanım Bir işlevi çağırırken, değişkenleri kopyalayarak değer ilettiğinizde buna "Değerlere Göre Çağırma" denir. Programlama dilinde bir fonksiyon çağırılırken değişkenlerin değerlerini kopyalamak yerine değişkenlerin adresleri "Referanslarla Çağır" olarak bilinir.
Argümanlar Bu yöntemde değişkenin bir kopyası geçirilir. Bu yöntemde, bir değişkenin kendisi geçilir.
Etki Değişkenin bir kopyasında yapılan değişiklikler, değişkenin değerini işlev dışında asla değiştirmez. Değişkendeki değişiklik, değişkenin fonksiyon dışındaki değerini de etkiler.
Değer değişikliği Gerçek değişkenlerde herhangi bir değişiklik yapmanıza izin vermez. Fonksiyon çağrılarını kullanarak değişkenlerin değerlerinde değişiklik yapmanıza izin verir.
Değişkenin geçişi Değişkenlerin değerleri basit bir yöntem kullanılarak aktarılır. İşaretçi değişkenleri, değişkenlerin adresini saklamak için gereklidir.
Değer değişikliği Orijinal değer değiştirilmedi. Orijinal değer değiştirilir.
Bellek Konumu Gerçek ve biçimsel argümanlar farklı hafıza konumunda oluşturulacak Gerçek ve biçimsel argümanlar aynı hafıza konumunda oluşturulacak
Emniyet Yanlışlıkla değiştirilemeyecekleri için gerçek argümanlar güvende kalır. Gerçek argümanlar Güvenli değildir. Yanlışlıkla değiştirilebilirler, bu nedenle argüman işlemlerini dikkatli bir şekilde yapmanız gerekir.
Varsayılan C ++. PHP gibi birçok programlama dilinde varsayılan. Visual Basic NET ve C #. JAVA gibi çoğu programlama dili tarafından desteklenir, ancak varsayılan olarak desteklenmez.

Değer yöntemine göre Çağrı kullanmanın avantajları

Değer yöntemine göre bir aramanın avantajları / faydaları:

  • Yöntem orijinal değişkeni değiştirmez, bu nedenle verileri korur.
  • Bir işlev çağrıldığında, gerçek bağımsız değişkenlerin gerçek içeriğini asla etkilemeyin.
  • Resmi argümanlara aktarılan gerçek argümanların değeri, bu nedenle resmi argümanda yapılan herhangi bir değişiklik gerçek durumları etkilemez.

Çağrı yöntemini referans yöntemiyle kullanmanın avantajları

Referans yöntemine göre çağrı kullanmanın avantajları:

  • İşlev, oldukça yararlı olan argümanın değerini değiştirebilir.
  • Bellek alanından tasarruf etmenize yardımcı olan tek bir değeri tutmak için yinelenen veriler oluşturmaz.
  • Bu yöntemde yapılan argümanın bir kopyası yoktur. Bu nedenle çok hızlı işlenir.
  • Yanlışlıkla yapılan değişiklikleri önlemenize yardımcı olur
  • Kodu okuyan bir kişi, değerin işlevde değiştirilebileceğini asla bilmez.

Call by value yöntemini kullanmanın dezavantajları

Değer yöntemine göre bir çağrının başlıca dezavantajları / dezavantajları şunlardır:

  • Gerçek parametrelerde yapılan değişiklikler, ilgili bağımsız değişken değişkenlerini de değiştirebilir
  • Bu yöntemde argümanlar değişken olmalıdır.
  • Bir işlev gövdesindeki bir değişkeni doğrudan değiştiremezsiniz.
  • Bazen argüman karmaşık ifadeler olabilir
  • Hafıza açısından verimli olmayan aynı değişken için oluşturulmuş iki kopya vardır.

Çağrı yöntemini referans yöntemiyle kullanmanın dezavantajları

Referans yöntemine göre çağrı kullanmanın başlıca dezavantajları şunlardır:

  • Güçlü, boş olmayan garanti. Referans alan bir işlevin girdinin boş olmadığından emin olması gerekir. Bu nedenle, boş kontrol yapılmasına gerek yoktur.
  • Referans olarak geçmek, işlevi teorik olarak saf hale getirmez.
  • Ömür boyu garanti, referanslarla ilgili büyük bir sorundur. Lambdalar ve çok iş parçacıklı programlarla çalışırken bu özellikle tehlikelidir.