В языке C передача функции как аргумента другой функции происходит через указатель на функцию. metanit.com
Процесс передачи включает следующие шаги: intuit.ru
- При компиляции функции выделяются участки памяти для формальных параметров. intuit.ru Формальные параметры становятся внутренними объектами функции. intuit.ru
- Вычисляются значения выражений, использованных в качестве фактических параметров при вызове функции. intuit.ru
- Значения выражений заносятся в участки памяти, выделенные для формальных параметров функции. intuit.ru
- В теле функции выполняется обработка с использованием значений внутренних объектов-параметров, и результат передаётся в точку вызова функции как возвращаемое ею значение. intuit.ru
При этом код, написанный внутри функции, не может изменять значения аргументов, которые использовались при вызове функции. neon1ks.github.io
Исключение составляет передача массивов в качестве аргументов: в таком случае функции передаётся адрес массива, и её внутренний код может изменить содержимое массива. neon1ks.github.io