C ++ — гибкий язык программирования общего назначения. Первоначально он был создан Бьярном Страуструпом, датским компьютерным ученым, еще в 1985 году. C ++ поддерживает методы передачи с тремя параметрами, то есть вызов по значению, вызов по адресу и вызов по ссылке. В этой статье мы собираемся обсудить механизм вызова по адресу и вызова по ссылке.
- Что такое функция?
- Что такое адрес?
- Что такое ссылка?
- Методы передачи параметров:
- Что такое вызов по адресу/передача по адресу?
- Что такое вызов по ссылке/передача по ссылке?
- Примеры:
- Пример-1 — вызов по адресу (1)
- Пример-2 — вызов по адресу (2 )
- Пример-3 — вызов по ссылке (1)
- Пример-4 — Вызов по ссылке (2 )
- Заключение
Что такое функция?
Прежде чем мы перейдем к актуальной теме, нам нужно понять, что это за функция в C ++. Многие из вас, возможно, уже знакомы с функциями.
Функция — это, по сути, фрагмент кода, который можно использовать для выполнения определенной задачи. Функция в основном используется для уменьшения повторяющегося кода в программе на C ++. Он принимает входные данные как параметры и возвращает выходные данные как возвращаемое значение. Если мы определим функцию один раз, мы сможем вызывать/использовать ее несколько раз в более поздней части нашей программы. Таким образом мы сохраняем в программе много повторяющегося кода.
Каждая программа на C ++ должна иметь функцию «main ()». Функция main () — это точка входа в программу на C ++. Помимо функции «main ()», программист может определить столько функций, сколько захочет.
Вот синтаксис определения функции:
Функция в C ++ может принимать 0 или более входных параметров, тогда как она может возвращать только одно возвращаемое значение.
Что такое адрес?
В C ++ есть два типа переменных (аналогично языку C) — переменная данных и переменная адреса. Адресная переменная используется для хранения адреса другой переменной данных. Например, рассмотрим следующий фрагмент кода:
int * ptr = & i;
Здесь первый оператор сообщает нам, что переменная «i» является переменной данных и хранит значение 100. Во втором операторе мы объявляем переменную-указатель, то есть «ptr», и инициализируем ее с помощью адрес переменной «i».
Что такое ссылка?
Ссылка — еще одна мощная функция языка C ++. Рассмотрим следующий фрагмент кода:
int & r = a;
In В этом примере мы объявили целое число, то есть «a», а затем объявили ссылочную переменную «r», которая инициализируется значением «a». Итак, ссылочная переменная — не что иное, как псевдоним другой переменной.
Методы передачи параметров:
Есть три типа методы передачи параметров на языке C ++:
- Вызов по значению/Передача по значению
- Вызов по адресу/Передача по адресу
- Звонок по ссылке/Передача по ссылке
В этой статье мы обсуждаем — Звонок по адресу и Звонок по ссылке.
Что такое вызов по адресу/передача по адресу?
В случае метода вызова по адресу/передачи по адресу аргументы функции передаются как адрес. Вызывающая функция передает адрес параметров. Переменные-указатели используются в определении функции. С помощью метода «Вызов по адресу» функция может получить доступ к фактическим параметрам и изменить их. В следующем разделе этой статьи мы увидим пример метода «Вызов по адресу».
Что такое вызов по ссылке/передача по ссылке?
В методе вызова по ссылке/передачи по ссылке функция параметры передаются как ссылка. Внутри определения функции доступ к фактическим параметрам осуществляется с помощью ссылочной переменной.
Примеры:
Теперь, когда мы понимаем концепции методов передачи параметров, мы увидим несколько примеров программ, чтобы понять механизм передачи параметров в C ++:
- Пример-1 — Вызов по адресу (1)
- Пример-2 — Вызов по адресу (2)
- Пример-3 — Вызов по ссылке (1)
- Пример-4 — Вызов по ссылке ( 2)
Первые два примера приведены для объяснения того, как метод «Вызов по адресу» работает в C ++. Последние два примера призваны объяснить концепцию вызова по ссылке.
Пример-1 — вызов по адресу (1)
В этом примере мы собираемся продемонстрировать вызов по адресу механизм. Из функции «main ()» мы вызываем функцию «hello ()» и передаем адрес «var». В определении функции мы получаем адрес «var» в переменной-указателе, то есть «p». Внутри функции hello значение «var» меняется на 200 с помощью указателя. Следовательно, значение «var» меняется на 200 внутри функции «main ()» после вызова функции «hello ()».
using namespace std;
void hello (int * p)
{
cout cout * p = 200;
cout cout }
int main ()
{
int var = 100;
cout
hello (& var);
cout
return 0;
}
Пример-2 — вызов по адресу (2 )
Это еще один пример вызова методом адреса. В этом примере мы собираемся объяснить, как можно использовать метод вызова по адресу для решения реальной проблемы. Например, мы хотим написать функцию для обмена двумя переменными. Если мы используем механизм вызова по значению, чтобы поменять местами две переменные, фактические переменные не меняются местами в вызывающей функции.. В таком сценарии можно использовать вызов по адресу. В этом примере мы передаем адрес как var_1 (& var_1), так и var_2 (& var_2) функции mySwap (). Внутри функции mySwap () мы меняем местами значения этих двух переменных с помощью указателей. Как вы можете видеть в выходных данных ниже, фактическое значение этих переменных меняется в функции «main ()» после выполнения функции «mySwap ()».
using namespace 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 cout
cout mySwap (& var_1, & var_2);
cout cout
return 0;
}
Пример-3 — вызов по ссылке (1)
В этом примере мы собираемся продемонстрировать, как вызов по ссылке работает в C ++. В определении функции «hello ()» значение принимается как ссылочная переменная (& p). С помощью ссылочной переменной (например, p) мы можем изменить значение фактического параметра (var) внутри функции «main ()».
using namespace std;
void hello (int & p)
{
cout cout p = 200;
cout cout }
int main ()
{
int var = 100;
cout
hello (var);
cout
return 0;
}
Пример-4 — Вызов по ссылке (2 )
Это еще один пример вызова по ссылке. В этом примере мы собираемся продемонстрировать, как вызов по ссылке работает в C ++, на реальном примере. Функция mySwap () вызывается из функции main () со следующими параметрами — var_1 и var_2. Внутри функции «mySwap ()» мы получаем параметры как ссылочные переменные.
using namespace 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 cout
cout mySwap (var_1, var_2);
cout cout
return 0;
}
Заключение
Понимание методов передачи параметров в C ++ очень важно. Язык программирования C поддерживает вызов по значению и только по адресу. Но C ++ поддерживает вызов по ссылке вместе с двумя предыдущими механизмами. В этой статье мы увидели несколько рабочих примеров, чтобы понять концепцию вызова по адресу и вызова по ссылке. Вызов по адресу — очень мощный и популярный метод во встраиваемых доменных приложениях.