PHP Code:
void adding_function(int* variable) // функция добавляет 2 к переданной в неё переменной, изменяя при этом саму переменную
{
*variable += 2; // переменная предварительно разыменовывается, дабы изменялось её значение, а не значение указателя на неё
}
int main()
{
int A = 8;
adding_function(A); // неправильный вызов функции - нужно передавать не значение переменной A, а её адрес.
adding_function(&A); // правильный вызов - передан адрес переменной A. После исполнения функции, A станет равно 10.
}
Что такое указатель вообще? Это переменная, которая хранит какой-то
адрес в ОЗУ
(как правило, адрес какой-то другой переменной). Соответственно, если указатель фигурирует среди параметров функции
(как в случае с adding_function) - то эта функция требует себе именно
адрес какой-то переменной, а не её значение. Поэтому я и пишу
adding_function(&A), ведь знак амперсанда - это операция "взятия адреса переменной".
А внутри тела самой функции написано
*variable += 2, то есть идёт "разыменование указателя"
(то есть, "обращение к значению переменной, на которую указывает указатель").