C ++ обаждане по адрес и обаждане по справка

C Call Address



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

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

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







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



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



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





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

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

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

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



inti= 100;
int *птр= &i;

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

Какво е Reference?

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

intда се= 200;
int &r=да се;

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

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

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

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

В тази статия обсъждаме: - Обадете се по адрес и Обадете се по справка.

Какво е обаждане по адрес / преминаване по адрес?

В случай на метод Извикване по адрес / Преминаване по адрес, аргументите на функцията се предават като адрес. Функцията на обаждащия се предава адреса на параметрите. Променливите на показалеца се използват в дефиницията на функцията. С помощта на метода 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 ().

#включва
използвайки пространство на именатачаса;

невалиденЗдравейте(int *стр)
{
цена <<endl<< 'Вътрешна функция hello ():' <<endl;
цена << „Стойност на *p =“ << *стр<<endl;
*стр= 200;
цена << „Стойност на *p =“ << *стр<<endl;
цена << 'Излизане от функцията hello ().' <<endl;
}

intглавен()
{
intкъдето= 100;
цена << 'Стойност на var вътре в main () function =' <<където<<endl;

Здравейте(&където);

цена <<endl<< 'Стойност на var вътре в main () function =' <<където<<endl;

връщане 0;
}

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

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

#включва
използвайки пространство на именатачаса;

невалиденmySwap(int *vptr_1,int *vptr_2)
{
inttemp_var;
temp_var= *vptr_1;
*vptr_1= *vptr_2;
*vptr_2=temp_var;
}

intглавен()
{
intvar_1= 100;
intvar_2= 300;

цена << 'Преди да извикате функцията mySwap (), стойност на var_1:' <<var_1<<endl;
цена << 'Преди да извикате функцията mySwap (), стойност на var_2:' <<var_2<<endl<<endl;

цена << „Извикване на функцията mySwap () - обаждане по адрес.“ <<endl<<endl;
mySwap(&var_1,&var_2);

цена << 'След извикване на функцията mySwap (), стойност на var_1:' <<var_1<<endl;
цена << 'След извикване на функцията mySwap (), стойност на var_2:' <<var_2<<endl;

връщане 0;
}

Пример-3-Обадете се по справка (1)

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

#включва
използвайки пространство на именатачаса;

невалиденЗдравейте(int &стр)
{
цена <<endl<< 'Вътрешна функция hello ():' <<endl;
цена << „Стойност на p =“ <<стр<<endl;
стр= 200;
цена << „Стойност на p =“ <<стр<<endl;
цена << 'Излизане от функцията hello ().' <<endl;
}

intглавен()
{
intкъдето= 100;
цена << 'Стойност на var вътре в main () function =' <<където<<endl;

Здравейте(където);

цена <<endl<< 'Стойност на var вътре в main () function =' <<където<<endl;

връщане 0;
}

Пример-4-Обадете се по справка (2)

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

#включва
използвайки пространство на именатачаса;

невалиденmySwap(int &vref_1,int &vref_2)
{
inttemp_var;
temp_var=vref_1;
vref_1=vref_2;
vref_2=temp_var;
}

intглавен()
{
intvar_1= 100;
intvar_2= 300;

цена << 'Преди да извикате функцията mySwap (), стойност на var_1:' <<var_1<<endl;
цена << 'Преди да извикате функцията mySwap (), стойност на var_2:' <<var_2<<endl<<endl;

цена << 'Извикване на функцията mySwap () - Извикване чрез справка.' <<endl<<endl;
mySwap(var_1, var_2);

цена << 'След извикване на функцията mySwap (), стойност на var_1:' <<var_1<<endl;
цена << 'След извикване на функцията mySwap (), стойност на var_2:' <<var_2<<endl;

връщане 0;
}

Заключение

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