Изобель
Есть два способа передачи аргументов / параметров функции. Один метод - это вызов по значению, а другой - вызов по ссылке.
Вызов по значению: в вызове по значению программа отправляет копию аргумента / параметра функции. Программист не передает фактическую переменную. Поскольку в функцию передается только копия переменной, любые изменения / модификации, сделанные внутри функции, не влияют на переменную, и значение переменной остается неизменным после вызова функции.
Следующий пример поясняет это;
Предположим, что a = 2 перед вызовом функции
Void function (int a)
{
a = a + a;
а = а - 5;
}
Поскольку в функцию передается только копия переменной «a», поэтому даже после вызова функции значение a останется 2.
Вызов по ссылке: при вызове по ссылке в функцию передается адрес аргумента / параметра. Проще говоря, в функцию передается фактическая переменная или указатель, и значение переменной может быть изменено / модифицировано внутри функции.
Например; предположим, что a = 2 перед вызовом функции.
После передачи этого значения в функцию типа
Void function (int & a)
{
* a = * a + * a;
* а = * а - 5;
}
После вызова этой функции значение a станет "1".
Лонни
Аргументы, передаваемые функции, могут быть двух типов, а именно
1. Переданные значения
2. Переданный адрес
Первый тип относится к вызову по значению, а второй тип относится к вызову по ссылке.
Например, рассмотрим program1
main ()
{
int x = 50, y = 70;
обмен (x, y);
printf («x =% dy =% d», x, y);
}
interchange (x1, y1)
int x1, y1;
{
int z1;
z1 = x1;
х1 = у1;
y1 = z1;
printf («x1 =% d y1 =% d», x1, y1);
}
Здесь значение функции обмена передается по значению.
Рассмотрим program2
main ()
{
int x = 50, y = 70;
обмен (& x, & y);
printf («x =% dy =% d», x, y);
}
interchange (x1, y1)
int * x1, * y1;
{
int z1;
z1 = * x1;
* х1 = * у1;
* y1 = z1;
printf («* x =% d * y =% d», x1, y1);
}
Здесь функция вызывается по ссылке. Другими словами, адрес передается с помощью символа &, а доступ к значению осуществляется с помощью символа *.
Основное различие между ними можно увидеть, проанализировав вывод program1 и program2.
Результат вызова программы 1 по значению:
x1 = 70 y1 = 50.
x = 50 y = 70
Но результат вызова программы 2 по ссылке:
* x = 70 * y = 50
x = 70 y = 50
Это потому, что в случае вызова по значению значение передается в функцию с именем interchange и там значение поменялось местами и было напечатано как
x1 = 70 y1 = 50
и снова, поскольку значения не возвращаются, и поэтому исходные значения x и y, как в основной функции, а именно
x = 50 y = 70, были напечатаны.