C ++

C ++ дзвінок за адресою та дзвінок за посиланням

C ++ дзвінок за адресою та дзвінок за посиланням

C ++ - це гнучка мова програмування загального призначення. Спочатку він був створений Бьярн Страуструп, датський інформатик, ще в 1985 році. C ++ підтримує трипараметричні методи передачі, тобто.e., дзвінок за значенням, дзвінок за адресою та дзвінок за посиланням. У цій статті ми поговоримо про дзвінок за адресою та дзвінок за допомогою довідкового механізму.

Що таке функція?

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

Функція - це в основному шматок коду, який може бути використаний для виконання певного завдання. Функція в основному використовується для зменшення повторюваного коду в програмі на C ++. Він приймає вхідні дані як параметри і повертає вихідні дані як повернене значення. Якщо ми визначимо функцію один раз, ми можемо викликати / використовувати її кілька разів у наступній частині нашої програми. Таким чином, ми зберігаємо багато повторюваних кодів у програмі.

Кожна програма на C ++ повинна мати функцію “main ()”. Функція “main ()” є точкою входу для програми на C ++. Окрім функції “main ()”, програміст може визначити скільки завгодно функцій.

Ось синтаксис визначення функції:

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

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

Що таке Адреса?

У C ++ є два типи змінних (аналогічно мові C) - змінна даних та змінна адреси. Адресна змінна використовується для зберігання адреси іншої змінної даних. Наприклад, розглянемо такий фрагмент коду:

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

Тут перше твердження говорить нам, що змінна “i” є змінною даних, і вона зберігає значення 100. У другому твердженні ми оголошуємо змінну покажчика, тобто.e. “Ptr” та ініціалізує його адресою змінної “i”.

Що таке посилання?

Посилання - ще одна потужна особливість мови С ++. Давайте розглянемо такий фрагмент коду:

int a = 200;
int & r = a;

У цьому прикладі ми оголосили ціле число, тобто.e. "A", а потім оголошено посилальну змінну "r", яка ініціалізується зі значенням "a". Отже, посилальна змінна - це не що інше, як псевдонім іншої змінної.

Методи передачі параметрів:

Існує три типи методів передачі параметрів мовою C ++:

  1. Дзвінок за значенням / Перехід за значенням
  2. Телефонуйте за адресою / Передайте за адресою
  3. Дзвінок за посиланням / Передати за посиланням

У цій статті ми обговорюємо: - дзвінок за адресою та дзвінок за посиланням.

Що таке дзвінок за адресою / передача за адресою?

У разі методу "Виклик за адресою / Передати за адресою" аргументи функції передаються як адреса. Функція абонента передає адресу параметрів. Змінні покажчика використовуються у визначенні функції. За допомогою методу виклику за адресою функція може отримати доступ до фактичних параметрів та змінити їх. У наступному розділі цієї статті ми побачимо приклад методу виклику за адресою.

Що таке Дзвінок за посиланням / Передати за посиланням?

У методі Call by reference / Pass by reference параметри функції передаються як посилання. Усередині визначення функції доступ до фактичних параметрів здійснюється за допомогою посилальної змінної.

Приклади:

Тепер, оскільки ми розуміємо концепцію методів передачі параметрів, ми побачимо кілька прикладів програм для розуміння механізму передачі параметрів у C ++:

  1. Приклад-1 - дзвінок за адресою (1)
  2. Приклад-2 - дзвінок за адресою (2)
  3. Приклад-3 - дзвінок за посиланням (1)
  4. Приклад-4 - дзвінок за посиланням (2)

Перші два приклади наводяться для пояснення того, як працює метод виклику за адресою в C++. Останні два приклади полягають у поясненні Заявки за допомогою контрольної концепції.

Приклад-1 - дзвінок за адресою (1)

У цьому прикладі ми збираємося продемонструвати дзвінок за механізмом адреси. З функції “main ()” ми викликаємо функцію “hello ()” та передаємо адресу “var”. У визначенні функції ми отримуємо адресу “var” у змінній покажчика, тобто.e., “Р”. Усередині функції hello, значення “var” змінюється на 200 за допомогою вказівника. Отже, значення “var” змінюється на 200 усередині функції “main ()” після виклику функції “hello ()”.

#включати
використання простору імен std;
порожнеча привіт (int * p)

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

int main ()

int var = 100;
кут << "Value of var inside main() function = " << var << endl;
привіт (& var);
кут << endl << "Value of var inside main() function = " << var << endl;
повернути 0;

Приклад-2 - дзвінок за адресою (2)

Це ще один приклад виклику методом адреси. У цьому прикладі ми збираємося пояснити, як метод виклику за адресою може бути використаний для вирішення реальної проблеми. Наприклад, ми хочемо написати функцію для обміну двома змінними. Якщо ми використовуємо механізм виклику за значенням, щоб поміняти місцями дві змінні, фактичні змінні не будуть замінені у функції викликає. У такому сценарії можна використовувати метод виклику за адресою. У цьому прикладі ми передаємо адресу і var_1 (& var_1), і var_2 (& var_2) функції “mySwap ()”. Усередині функції “mySwap ()” ми замінюємо значення цих двох змінних за допомогою покажчиків. Як ви можете бачити в поданому нижче результаті, фактичне значення цих змінних змінюється у функції “main ()” після виконання функції “mySwap ()”.

#включати
використання простору імен 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;
кут << "Before calling mySwap() function, value of var_1 : " << var_1 << endl;
кут << "Before calling mySwap() function, value of var_2 : " << var_2 << endl << endl;
кут << "Calling mySwap() function - Call by address." << endl << endl;
mySwap (& var_1, & var_2);
кут << "After calling mySwap() function, value of var_1 : " << var_1 << endl;
кут << "After calling mySwap() function, value of var_2 : " << var_2 << endl;
повернути 0;

Приклад-3 - дзвінок за посиланням (1)

У цьому прикладі ми продемонструємо, як працює виклик за допомогою посилання в C++. У визначенні функції “hello ()” значення отримується як посилальна змінна (& p). За допомогою посилальної змінної (i.e., p), ми можемо змінити значення фактичного параметра (var) усередині функції “main ()”.

#включати
використання простору імен std;
порожнеча привіт (int & p)

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

int main ()

int var = 100;
кут << "Value of var inside main() function = " << var << endl;
привіт (var);
кут << endl << "Value of var inside main() function = " << var << endl;
повернути 0;

Приклад-4 - дзвінок за посиланням (2)

Це ще один приклад дзвінка за допомогою посилання. У цьому прикладі ми збираємося продемонструвати, як виклик за допомогою посилання працює в C ++, за допомогою реального прикладу. Функція “mySwap ()” викликається з функції “main ()” з такими параметрами - var_1 і var_2. Усередині функції “mySwap ()” ми отримуємо параметри як еталонні змінні.

#включати
використання простору імен 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;
кут << "Before calling mySwap() function, value of var_1 : " << var_1 << endl;
кут << "Before calling mySwap() function, value of var_2 : " << var_2 << endl << endl;
кут << "Calling mySwap() function - Call by reference." << endl << endl;
mySwap (var_1, var_2);
кут << "After calling mySwap() function, value of var_1 : " << var_1 << endl;
кут << "After calling mySwap() function, value of var_2 : " << var_2 << endl;
повернути 0;

Висновок

Розуміння методів передачі параметрів у C++ дуже важливо. Мова програмування С підтримує лише дзвінок за значенням та дзвінок за адресою. Але C ++ підтримує Call за допомогою посилання разом із попередніми двома механізмами. У цій статті ми побачили кілька робочих прикладів для розуміння поняття дзвінка за адресою та дзвінка за посиланням. Дзвінок за адресою - це дуже потужний і популярний метод у програмах вбудованих доменів.

Кращі ігри командного рядка для Linux
Командний рядок - це не просто ваш найбільший союзник при використанні Linux, він також може бути джерелом розваг, оскільки ви можете використовувати ...
Кращі програми для картографування геймпадів для Linux
Якщо ви любите грати в ігри на Linux із геймпадом замість типової системи введення клавіатури та миші, є кілька корисних програм для вас. Багато ігор ...
Корисні інструменти для геймерів Linux
Якщо ви любите грати в ігри на Linux, швидше за все, ви, можливо, використовували додатки та утиліти, такі як Wine, Lutris та OBS Studio, щоб покращит...