C ++

C ++ обаждане по адрес и обаждане по референция

C ++ обаждане по адрес и обаждане по референция

C ++ е гъвкав език за програмиране с общо предназначение. Първоначално е създаден от Bjarne Stroustrup, датски компютърен учен, още през 1985г. C ++ поддържа трипараметрични методи за предаване, т.е.д., обаждане по стойност, обаждане по адрес и обаждане по референция. В тази статия ще обсъдим обаждането по адрес и обаждането чрез референтен механизъм.

Какво е функция?

Преди да преминем към действителната тема, трябва да разберем каква е функцията в C++. Много от вас може би вече са запознати с функциите.

Функцията е основно код, който може да се използва за изпълнение на определена задача. Функция се използва главно за намаляване на повтарящия се код в програма C ++. Той приема входа като параметри и връща изхода като върната стойност. Ако дефинираме функцията веднъж, можем да я извикаме / използваме няколко пъти в по-късната част на нашата програма. По този начин спестяваме много повтарящи се кодове в програмата.

Всяка програма на C ++ трябва да има функцията “main ()”. Функцията “main ()” е входна точка за програма на C ++. Освен функцията “main ()”, програмистът може да дефинира колкото функции желае.

Ето синтаксиса на дефинирането на функция:

Return_type Function_Name (Списък на входните параметри)

Функцията в C ++ може да приеме 0 или повече броя входни параметри, докато може да върне само една възвръщаема стойност.

Какво е Адрес?

Има два типа променливи в C ++ (подобно на езика C) - променлива на данни и променлива на адреса. Адресната променлива се използва за съхраняване на адреса на друга променлива на данни. Например, нека разгледаме следния кодов фрагмент:

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

Тук първото изявление ни казва, че променливата „i“ е променлива на данни и съхранява стойността 100. Във второто изявление ние декларираме променлива на указателя, т.е.д. „Ptr“ и го инициализира с адреса на променливата „i“.

Какво е справка?

Препратката е друга мощна характеристика на езика C ++. Нека разгледаме следния кодов фрагмент:

int a = 200;
int & r = a;

В този пример ние сме декларирали цяло число, т.е.д. „A“ и след това декларира референтна променлива „r“, която се инициализира със стойността на „a“. И така, референтната променлива не е нищо друго освен псевдоним на друга променлива.

Методи за предаване на параметри:

Има три вида методи за предаване на параметри в езика C ++:

  1. Обаждане по стойност / Предаване по стойност
  2. Обадете се по адрес / Предайте по адрес
  3. Обаждане по референция / Предаване по референция

В тази статия обсъждаме за - Обаждане по адрес и Обаждане по референция.

Какво е Call By Address / Pass by address?

В случая на метода Call by address / Pass by address аргументите на функцията се предават като адрес. Функцията повикващ предава адреса на параметрите. Променливите на указателя се използват в дефиницията на функцията. С помощта на метода Call by address, функцията може да осъществи достъп до действителните параметри и да ги модифицира. Ще видим пример за метода Call by address по-късно в тази статия.

Какво е Call By Reference / Pass by reference?

В метода Call by reference / Pass by reference параметрите на функцията се предават като референция. Вътре в дефиницията на функцията се осъществява достъп до действителните параметри с помощта на референтната променлива.

Примери:

Сега, тъй като разбираме концепцията за методите за предаване на параметри, ще видим няколко примерни програми за разбиране на механизма за предаване на параметри в C ++:

  1. Пример-1 - Обаждане по адрес (1)
  2. Пример-2 - Обаждане по адрес (2)
  3. Пример-3 - Обаждане чрез справка (1)
  4. Пример-4 - Обаждане чрез справка (2)

Първите два примера са дадени, за да обяснят как методът Call by address работи в C++. Последните два примера са за обяснение на поканата чрез референтна концепция.

Пример-1 - Обаждане по адрес (1)

В този пример ще демонстрираме обаждането по адресен механизъм. От функцията “main ()” извикваме функцията “hello ()” и предаваме адреса на “var”. В дефиницията на функцията получаваме адреса на „var“ в променлива на указателя, т.е.д., „P“. Вътре във функцията hello, стойността на “var” се променя на 200 с помощта на показалеца. Следователно стойността на „var“ се променя на 200 във функцията „main ()“ след извикването на функцията „hello ()“.

#include
използване на пространство от имена std;
void hello (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 main ()

int var = 100;
Cout << "Value of var inside main() function = " << var << endl;
здравей (& var);
Cout << endl << "Value of var inside main() function = " << var << endl;
връщане 0;

Пример-2 - Обаждане по адрес (2)

Това е друг пример за метод на обаждане по адрес. В този пример ще обясним как методът на обаждане по адрес може да се използва за решаване на проблем от реалния живот. Например искаме да напишем функция, която да замени две променливи. Ако използваме механизма за повикване по стойност, за да разменяме две променливи, действителните променливи не се разменят във функцията на повикващия. Методът на обаждане по адрес може да се използва в такъв сценарий. В този пример предаваме адреса на var_1 (& var_1) и var_2 (& var_2) на функцията “mySwap ()”. Във функцията “mySwap ()” разменяме стойностите на тези две променливи с помощта на указателите. Както можете да видите в изхода по-долу, действителната стойност на тези променливи се разменя във функцията “main ()” след изпълнението на функцията “mySwap ()”.

#include
използване на пространство от имена std;
void mySwap (int * vptr_1, int * vptr_2)

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

int main ()

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;

Пример-3 - Обаждане чрез справка (1)

В този пример ще демонстрираме как обаждането чрез препратка работи в C++. В дефиницията на функцията “hello ()” стойността се получава като референтна променлива (& p). С помощта на референтната променлива (т.е.д., p), ние сме в състояние да променим стойността на действителния параметър (var) във функцията “main ()”.

#include
използване на пространство от имена std;
void hello (int & p)

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

int main ()

int var = 100;
Cout << "Value of var inside main() function = " << var << endl;
здравей (var);
Cout << endl << "Value of var inside main() function = " << var << endl;
връщане 0;

Пример-4 - Обаждане чрез справка (2)

Това е друг пример за обаждане чрез препратка. В този пример ще покажем как работи обаждането чрез препратка в C ++ с помощта на пример от реалния свят. Функцията “mySwap ()” се извиква от функцията “main ()” със следните параметри - var_1 и var_2. Във функцията “mySwap ()” получаваме параметрите като референтни променливи.

#include
използване на пространство от имена std;
void mySwap (int & vref_1, int & vref_2)

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

int main ()

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;

Заключение

Разбиране на методите за предаване на параметри в ° С++ е много важно. Езикът за програмиране C поддържа само повикване по стойност и повикване по адрес. Но C ++ поддържа Call чрез препратка заедно с предишните два механизма. В тази статия видяхме няколко работни примера за разбиране на концепцията за обаждане по адрес и обаждане чрез препратка. Обаждането по адрес е много мощен и популярен метод в приложенията за вграден домейн.

WinMouse ви позволява да персонализирате и подобрите движението на показалеца на мишката на компютър с Windows
Ако искате да подобрите функциите по подразбиране на показалеца на мишката, използвайте безплатна програма WinMouse. Той добавя още функции, за да ви ...
Бутонът на левия бутон на мишката не работи в Windows 10
Ако използвате специална мишка с вашия лаптоп или настолен компютър, но бутонът на левия бутон на мишката не работи на Windows 10/8/7 по някаква причи...
Курсорът скача или се движи произволно, докато пишете в Windows 10
Ако установите, че курсорът на вашата мишка скача или се движи самостоятелно, автоматично, произволно, докато пишете в лаптоп или компютър на Windows,...