C ++

C ++ Вызов по адресу и вызов по ссылке

C ++ Вызов по адресу и вызов по ссылке

C ++ - гибкий язык программирования общего назначения. Первоначально он был создан Бьярне Страуструп, датский ученый-компьютерщик, еще в 1985 году. C ++ поддерживает трехпараметрические методы передачи, i.е., вызов по значению, вызов по адресу и вызов по ссылке. В этой статье мы поговорим о механизме звонка по адресу и звонка по ссылке.

Что такое функция?

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

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

Каждая программа на C ++ должна иметь функцию main (). Функция main () - это точка входа в программу на C ++. Помимо функции «main ()», программист может определить столько функций, сколько захочет.

Вот синтаксис определения функции:

Return_type Имя_функции (Список входных параметров)

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

Что такое адрес?

В C ++ есть два типа переменных (аналогично языку C) - переменная данных и переменная адреса. Адресная переменная используется для хранения адреса другой переменной данных. Например, давайте рассмотрим следующий фрагмент кода:

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

Здесь первый оператор сообщает нам, что переменная «i» является переменной данных и хранит значение 100. Во втором операторе мы объявляем переменную-указатель, i.е. «Ptr» и инициализируя его адресом переменной «i».

Что такое ссылка?

Ссылка - еще одна мощная функция языка C ++. Рассмотрим следующий фрагмент кода:

int a = 200;
int & r = a;

В этом примере мы объявили целое число i.е. «A», а затем объявил ссылочную переменную «r», которая инициализируется значением «a». Итак, ссылочная переменная - не что иное, как псевдоним другой переменной.

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

В языке C ++ существует три типа методов передачи параметров:

  1. Вызов по значению / Передача по значению
  2. Звонок по адресу / Передача по адресу
  3. Звоните по ссылке / Передайте по ссылке

В этой статье мы обсуждаем: - Звонок по адресу и Звонок по ссылке.

Что такое вызов по адресу / передача по адресу?

В случае метода «Вызов по адресу» / «Передача по адресу» аргументы функции передаются как адрес. Вызывающая функция передает адрес параметров. Переменные-указатели используются в определении функции. С помощью метода вызова по адресу функция может получить доступ к фактическим параметрам и изменить их. Мы увидим пример метода «Вызов по адресу» в следующем разделе этой статьи.

Что такое вызов по ссылке / передача по ссылке?

В методе «Вызов по ссылке» / «Передача по ссылке» параметры функции передаются в виде ссылки. Внутри определения функции доступ к фактическим параметрам осуществляется с помощью ссылочной переменной.

Примеры:

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

  1. Пример-1 - Звонок по адресу (1)
  2. Пример-2 - Звонок по адресу (2)
  3. Пример-3 - Вызов по ссылке (1)
  4. Пример-4 - Вызов по ссылке (2)

Первые два примера приведены для объяснения того, как работает метод «Вызов по адресу» в языке C++. Последние два примера призваны объяснить концепцию вызова по ссылке.

Пример-1 - Звонок по адресу (1)

В этом примере мы собираемся продемонстрировать механизм вызова по адресу. Из функции «main ()» мы вызываем функцию «hello ()» и передаем адрес «var». В определении функции мы получаем адрес «var» в переменной-указателе, i.е., "п". Внутри функции hello значение «var» меняется на 200 с помощью указателя. Следовательно, значение «var» меняется на 200 внутри функции «main ()» после вызова функции «hello ()».

#включать
используя пространство имен std;
недействительный привет (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;

Пример-2 - Звонок по адресу (2)

Это еще один пример вызова по адресному методу. В этом примере мы собираемся объяснить, как метод вызова по адресу может использоваться для решения реальной проблемы. Например, мы хотим написать функцию для обмена двумя переменными. Если мы используем механизм вызова по значению, чтобы поменять местами две переменные, фактические переменные не меняются местами в вызывающей функции. В таком сценарии можно использовать вызов по адресу. В этом примере мы передаем адрес как var_1 (& var_1), так и var_2 (& var_2) функции mySwap (). Внутри функции «mySwap ()» мы меняем местами значения этих двух переменных с помощью указателей. Как вы можете видеть в выводе ниже, фактическое значение этих переменных заменяется в функции «main ()» после выполнения функции «mySwap ()».

#включать
используя пространство имен std;
недействительным 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). С помощью ссылочной переменной (i.е., p), мы можем изменить значение фактического параметра (var) внутри функции «main ()».

#включать
используя пространство имен std;
недействительный привет (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;
привет (вар);
cout << 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;
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 поддерживает вызовы по значению и только по адресу. Но C ++ поддерживает вызов по ссылке вместе с двумя предыдущими механизмами. В этой статье мы видели несколько рабочих примеров, чтобы понять концепцию вызова по адресу и вызова по ссылке. Звонок по адресу - очень мощный и популярный метод во встроенных доменных приложениях.

Как увеличить FPS в Linux?
FPS означает Кадров в секунду. Задача FPS - измерить частоту кадров при воспроизведении видео или во время игры. Проще говоря, количество непрерывных ...
Лучшие игры Oculus App Lab
Если вы владелец гарнитуры Oculus, вы должны знать о загрузке неопубликованных приложений. Боковая загрузка - это процесс установки на гарнитуру содер...
10 лучших игр для Ubuntu
Платформа Windows была одной из доминирующих платформ для игр из-за огромного процента игр, которые разрабатываются сегодня с встроенной поддержкой Wi...