C++ Adrese Göre Çağrı ve Referansa Göre Çağrı

C Call Address



C++ esnek bir genel amaçlı programlama dilidir. Aslen tarafından oluşturuldu Bjarne Stroustrup, Danimarkalı bir bilgisayar bilimcisi, 1985'te. C++ üç parametreli geçiş yöntemlerini destekler, yani değere göre arama, adrese göre arama ve referansa göre arama. Bu yazımızda, adrese göre arama ve referansa göre arama mekanizmasını tartışacağız.

fonksiyon nedir?

Asıl konuya geçmeden önce, C++'da fonksiyonun ne olduğunu anlamamız gerekiyor. Çoğunuz fonksiyonlara zaten aşina olabilirsiniz.







İşlev, temel olarak belirli bir görevi gerçekleştirmek için kullanılabilecek bir kod parçasıdır. Bir fonksiyon, esas olarak bir C++ programında tekrarlayan kodu azaltmak için kullanılır. Girdiyi parametre olarak alır ve çıktıyı bir dönüş değeri olarak döndürür. Fonksiyonu bir kez tanımlarsak, programımızın sonraki bölümlerinde birden çok kez çağırabilir/kullanabiliriz. Bu şekilde, programda çok sayıda tekrarlayan kod kaydederiz.



Her C++ programı main() işlevine sahip olacaktır. main() işlevi, bir C++ programının giriş noktasıdır. main() fonksiyonu dışında, programcı istediği kadar fonksiyon tanımlayabilir.



İşte bir fonksiyon tanımlamanın sözdizimi:





Dönüş_tipi İşlev_Adı(Giriş parametresi Listesi)

C++'daki işlev 0 veya daha fazla sayıda giriş parametresi kabul edebilirken yalnızca bir dönüş değeri döndürebilir.

Adres nedir?

C++'da (C diline benzer) iki tür değişken vardır – Veri Değişkeni ve Adres Değişkeni. Adres değişkeni, başka bir veri değişkeninin adresini saklamak için kullanılır. Örneğin, aşağıdaki kod parçasını ele alalım:



intben= 100;
int *ptr= &ben;

Burada, ilk ifade bize i değişkeninin bir veri değişkeni olduğunu ve 100 değerini sakladığını söyler. İkinci ifadede, bir pointer değişkeni, yani ptr bildiriyor ve onu i değişkeninin adresi ile başlatıyoruz.

Referans Nedir?

Referans, C++ dilinin bir başka güçlü özelliğidir. Aşağıdaki kod parçasını ele alalım:

intile= 200;
int &r=ile;

Bu örnekte, bir tamsayı, yani a bildirdik ve ardından a değeriyle başlatılan bir referans değişkeni r bildirdik. Dolayısıyla referans değişkeni, başka bir değişkenin takma adından başka bir şey değildir.

Parametre geçiş yöntemleri:

C++ dilinde üç tür parametre geçirme yöntemi vardır:

  1. Değere göre arama / Değere göre iletme
  2. Adrese göre ara / Adrese göre geç
  3. Referansa göre ara / Referansa göre geç

Bu yazıda, - Adrese göre arama ve Referansa göre arama hakkında tartışıyoruz.

Adrese Göre Arama / Adrese Göre Geçiş nedir?

Adrese göre ara / Adrese göre gönder yöntemi durumunda, işlev argümanları adres olarak iletilir. Çağıran işlevi, parametrelerin adresini iletir. İşlev tanımında işaretçi değişkenleri kullanılır. Call by address yönteminin yardımıyla, fonksiyon gerçek parametrelere erişebilir ve bunları değiştirebilir. Bu makalenin ilerleyen bölümlerinde Adrese göre arama yönteminin bir örneğini göreceğiz.

Referansla Arama / Referansla Geçme nedir?

Call by Reference / Pass by Reference yönteminde fonksiyon parametreleri referans olarak iletilir. İşlev tanımının içinde, gerçek parametrelere referans değişkeni kullanılarak erişilir.

Örnekler:

Şimdi, parametre geçirme yöntemleri kavramını anladığımız için, C++'da parametre geçiş mekanizmasını anlamak için birkaç örnek program göreceğiz:

  1. Örnek-1 – Adrese Göre Arama (1)
  2. Örnek-2 – Adrese Göre Arama (2)
  3. Örnek-3 – Referansa Göre Çağrı (1)
  4. Örnek-4 – Referansa Göre Çağrı (2)

İlk iki örnek, Adrese göre arama yönteminin C++'da nasıl çalıştığını açıklamak için verilmiştir. Son iki örnek, Referansa göre Çağrı kavramını açıklamak içindir.

Örnek-1 – Adrese Göre Arama (1)

Bu örnekte, adrese göre çağrı mekanizmasını göstereceğiz. main() işlevinden, merhaba() işlevini çağırıyoruz ve var adresini geçiyoruz. İşlev tanımında, bir işaretçi değişkeninde var adresini alıyoruz, yani p. Hello fonksiyonu içerisinde pointer yardımı ile var değeri 200 olarak değiştirilmektedir. Bu nedenle, merhaba() işlev çağrısından sonra ana() işlevi içinde var değeri 200 olarak değiştiriliyor.

#Dahil etmek
kullanarak ad alanısaat;

geçersizMerhaba(int *P)
{
maliyet <<son<< 'merhaba() işlevi içinde:' <<son;
maliyet << '*p'nin değeri =' << *P<<son;
*P= 200;
maliyet << '*p'nin değeri =' << *P<<son;
maliyet << 'merhaba() işlevinden çıkılıyor.' <<son;
}

intana()
{
intnerede= 100;
maliyet << 'main() işlevi içindeki değişkenin değeri =' <<nerede<<son;

Merhaba(&nerede);

maliyet <<son<< 'main() işlevi içindeki değişkenin değeri =' <<nerede<<son;

dönüş 0;
}

Örnek-2 – Adrese Göre Arama (2)

Bu, adrese göre arama yönteminin başka bir örneğidir. Bu örnekte, gerçek hayattaki bir problemi çözmek için adrese göre arama yönteminin nasıl kullanılabileceğini açıklayacağız. Örneğin, iki değişkeni değiş tokuş edecek bir fonksiyon yazmak istiyoruz. İki değişkeni değiş tokuş etmek için değere göre çağrı mekanizmasını kullanırsak, gerçek değişkenler arayan işlevinde değiştirilmez. Adrese göre arama yöntemi böyle bir senaryoda kullanılabilir. Bu örnekte hem var_1 (&var_1) hem de var_2 (&var_2) adresini mySwap() işlevine geçiriyoruz. mySwap() fonksiyonu içerisinde bu iki değişkenin değerlerini işaretçiler yardımıyla değiştiriyoruz. Aşağıdaki çıktıda görebileceğiniz gibi, bu değişkenlerin gerçek değeri, mySwap() işlevi yürütüldükten sonra main() işlevinde değiştiriliyor.

#Dahil etmek
kullanarak ad alanısaat;

geçersizbenimTakasım(int *vptr_1,int *vptr_2)
{
inttemp_var;
temp_var= *vptr_1;
*vptr_1= *vptr_2;
*vptr_2=temp_var;
}

intana()
{
intvar_1= 100;
intvar_2= 300;

maliyet << 'mySwap() işlevini çağırmadan önce, var_1 değeri:' <<var_1<<son;
maliyet << 'mySwap() işlevini çağırmadan önce, var_2 değeri:' <<var_2<<son<<son;

maliyet << 'mySwap() işlevinin çağrılması - Adrese göre arama.' <<son<<son;
benimTakasım(&var_1,&var_2);

maliyet << 'mySwap() işlevi çağrıldıktan sonra var_1 değeri:' <<var_1<<son;
maliyet << 'mySwap() işlevi çağrıldıktan sonra var_2 değeri:' <<var_2<<son;

dönüş 0;
}

Örnek-3 – Referansa Göre Çağrı (1)

Bu örnekte, C++'da referansa göre aramanın nasıl çalıştığını göstereceğiz. merhaba() işlev tanımında, değer bir referans değişkeni (&p) olarak alınır. Referans değişkenin (yani, p) yardımıyla, main() işlevi içindeki asıl parametrenin (var) değerini değiştirebiliriz.

#Dahil etmek
kullanarak ad alanısaat;

geçersizMerhaba(int &P)
{
maliyet <<son<< 'merhaba() işlevi içinde:' <<son;
maliyet << 'p'nin değeri =' <<P<<son;
P= 200;
maliyet << 'p'nin değeri =' <<P<<son;
maliyet << 'merhaba() işlevinden çıkılıyor.' <<son;
}

intana()
{
intnerede= 100;
maliyet << 'main() işlevi içindeki değişkenin değeri =' <<nerede<<son;

Merhaba(nerede);

maliyet <<son<< 'main() işlevi içindeki değişkenin değeri =' <<nerede<<son;

dönüş 0;
}

Örnek-4 – Referansa Göre Çağrı(2)

Bu, referansa dayalı bir çağrının başka bir örneğidir. Bu örnekte, gerçek dünyadan bir örnek yardımıyla referansa göre çağrının C++'da nasıl çalıştığını göstereceğiz. mySwap() işlevi, ana() işlevinden şu parametrelerle çağrılır – var_1 ve var_2. mySwap() fonksiyonunun içinde parametreleri referans değişkenler olarak alıyoruz.

#Dahil etmek
kullanarak ad alanısaat;

geçersizbenimTakasım(int &vref_1,int &vref_2)
{
inttemp_var;
temp_var=vref_1;
vref_1=vref_2;
vref_2=temp_var;
}

intana()
{
intvar_1= 100;
intvar_2= 300;

maliyet << 'mySwap() işlevini çağırmadan önce, var_1 değeri:' <<var_1<<son;
maliyet << 'mySwap() işlevini çağırmadan önce, var_2 değeri:' <<var_2<<son<<son;

maliyet << 'mySwap() işlevinin çağrılması - Referansa göre çağrı.' <<son<<son;
benimTakasım(var_1, var_2);

maliyet << 'mySwap() işlevi çağrıldıktan sonra var_1 değeri:' <<var_1<<son;
maliyet << 'mySwap() işlevi çağrıldıktan sonra var_2 değeri:' <<var_2<<son;

dönüş 0;
}

Çözüm

Parametre geçirme yöntemlerini anlama C++ çok önemlidir. C programlama dili, Yalnızca değere göre aramayı ve yalnızca adrese göre aramayı destekler. Ancak, C++, önceki iki mekanizma ile birlikte Çağrı ile çağrıyı destekler. Bu makalede, Adrese göre arama ve Referansa göre arama kavramını anlamak için birkaç çalışma örneği gördük. Adrese göre arama, gömülü etki alanı uygulamalarında çok güçlü ve popüler bir yöntemdir.