C++

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

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

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, i.e., 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, fonksiyonun C'de 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 işlev, çoğunlukla bir C++ programında tekrarlayan kodu azaltmak için kullanılır. Girdiyi parametre olarak alır ve çıktıyı 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:

Return_type Function_Name (Giriş parametresi Listesi)

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

Adres Nedir??

C++'da iki tür değişken vardır (C diline benzer) - 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:

int ben = 100;
int *ptr = &i;

Burada ilk ifade bize “i” değişkeninin bir veri değişkeni olduğunu ve 100 değerini sakladığını söylüyor. İkinci ifadede, bir işaretçi değişkeni bildiriyoruz, i.e. "ptr" ve onu "i" değişkeninin adresiyle başlatma.

Referans Nedir??

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

int a = 200;
int &r = a;

Bu örnekte, bir tamsayı bildirdik, i.e. “a” ve ardından “a” değeriyle başlatılan bir “r” referans değişkeni bildirdi. Yani, 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. Arayan 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.

Referansa Göre Çağrı / Referansa Göre Geç nedir??

Referansa Göre Çağır / Referansa Göre Geç 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, C'de Adrese göre arama yönteminin nasıl çalıştığını açıklamak için verilmiştir++. Son iki örnek, Referansa göre arama 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()” fonksiyonundan “hello()” fonksiyonunu çağırıyoruz ve “var” adresini geçiyoruz. Fonksiyon tanımında, bir işaretçi değişkeninde “var” adresini alıyoruz, i.e., "p". Hello fonksiyonunun içerisinde pointer yardımı ile “var” değeri 200 olarak değiştirilmektedir. Bu nedenle, “hello()” işlev çağrısından sonra “main()” işlevinde “var” değeri 200 olarak değiştiriliyor.

#Dahil etmek
ad alanı std kullanarak;
void merhaba(int *p)

cout << endl << "Inside hello() function : " << endl;
cout << "Value of *p = " << *p << endl;
*p = 200;
cout << "Value of *p = " << *p << endl;
cout << "Exiting hello() function." << endl;

int ana()

int var = 100;
cout << "Value of var inside main() function = " << var << endl;
merhaba(&var);
cout << endl << "Value of var inside main() function = " << var << endl;
0 döndür;

Ö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ştirmek için bir fonksiyon yazmak istiyoruz. İki değişkeni değiştirmek 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 pointerlar yardımıyla bu iki değişkenin değerlerini takas ediyoruz. 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
ad alanı std kullanarak;
void mySwap(int *vptr_1, int *vptr_2)

int temp_var;
temp_var = *vptr_1;
*vptr_1 = *vptr_2;
*vptr_2 = temp_var;

int ana()

int var_1 = 100;
int var_2 = 300;
cout << "Before calling mySwap() function, value of var_1 : " << var_1 << endl;
cout << "Before calling mySwap() function, value of var_2 : " << var_2 << endl << endl;
cout << "Calling mySwap() function - Call by address." << endl << endl;
mySwap(&var_1, &var_2);
cout << "After calling mySwap() function, value of var_1 : " << var_1 << endl;
cout << "After calling mySwap() function, value of var_2 : " << var_2 << endl;
0 döndür;

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

Bu örnekte, C'de referansa göre aramanın nasıl çalıştığını göstereceğiz++. “merhaba()” fonksiyon tanımında, değer bir referans değişkeni (&p) olarak alınır. Referans değişkenin yardımıyla (i.e., p), “main()” fonksiyonu içinde gerçek parametrenin (var) değerini değiştirebiliriz.

#Dahil etmek
ad alanı std kullanarak;
void merhaba(int &p)

cout << endl << "Inside hello() function : " << endl;
cout << "Value of p = " << p << endl;
p = 200;
cout << "Value of p = " << p << endl;
cout << "Exiting hello() function." << endl;

int ana()

int var = 100;
cout << "Value of var inside main() function = " << var << endl;
merhaba(var);
cout << endl << "Value of var inside main() function = " << var << endl;
0 döndür;

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

Bu, referansa göre 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, "main()" 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
ad alanı std kullanarak;
void mySwap(int &vref_1, int &vref_2)

int temp_var;
temp_var = vref_1;
vref_1 = vref_2;
vref_2 = temp_var;

int ana()

int var_1 = 100;
int var_2 = 300;
cout << "Before calling mySwap() function, value of var_1 : " << var_1 << endl;
cout << "Before calling mySwap() function, value of var_2 : " << var_2 << endl << endl;
cout << "Calling mySwap() function - Call by reference." << endl << endl;
mySwap(var_1, var_2);
cout << "After calling mySwap() function, value of var_1 : " << var_1 << endl;
cout << "After calling mySwap() function, value of var_2 : " << var_2 << endl;
0 döndür;

Sonuç

Parametre geçirme yöntemlerini anlama C++ çok önemli. 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 Call by Reference'ı 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.

Linux Oyunlarını Otomatikleştirmek için AutoKey Nasıl Kullanılır?
AutoKey, Linux ve X11 için Python 3, GTK ve Qt'de programlanmış bir masaüstü otomasyon aracıdır. Komut dosyası oluşturma ve MAKRO işlevselliğini kulla...
How to Show FPS Counter in Linux Games
Linux gaming got a major push when Valve announced Linux support for Steam client and their games in 2012. Since then, many AAA and indie games have m...
How to download and Play Sid Meier's Civilization VI on Linux
Introduction to the game Civilization 6 is a modern take on the classic concept introduced in the series of the Age of Empires games. The idea was fai...