Передача значения в функцию по ссылке/указателю
Ранее, мы писали функции например:
int Sum(int a, int b) {return (a+b);}
И возвращали результат функцией, но представим что нам понадобится изменить передаваемые значения:
Напишем функцию, которая прибавит к передаваемому значению число 2 (т.е. изменит аргумент фунции)
void Add_2(int a)
{
a=a+2;
}
Казалось бы – функция должна работать, но нет.
Если мы напишем следующий код:
int Value=0;
Add_2(Value);
cout<< Value <<endl; //просто вывод на консоль
То в консоль выведется 0
В чем причина? – в функцию аргументы передаются по значению (т.е. копируется их значение)
и написав Add_2(Value); это равносильно Add_2(0); и при этом переменная Value (ее адрес не фигурирует).
Для исправления ситуации используют передачу по ссылке
void Add_2(int& a)
{
a=a+2;
}
Или по указателю
void Add_2(int* a)
{
*a=*a+2;
}
Для указателя в этом случае вызываем функцию Add_2(&Value);
Повторюсь, что название массива является указателем на его элемент с индексом [0].
