Фактический и формальный параметр
Их отличие
void myFunc(int x) { } // x - формальный параметр
Фактический параметр - это значение, которое будет передано в функцию, когда она будет вызвана.
https://ru.wikipedia.org/wiki/Параметр_(программирование)
Формальный параметр описан в вызываемой программе, а не в вызывающей.
А фактический параметр (значение или значение указателя) будет подставлен в вызываемую программу при её вызове.
Также запомните, что параметры фактические, это не то, что подпрограмме дают, а те, что подпрограмма получает.
Подпрограмма есть форма, и готова принять по форме то, что она предлагает принять согласно её внутренним описаниям, а не то, что кто-то где-то пытается ей сунуть неудобоваримое. И если подпрограмма переварит это, своими преобразованиями по умолчанию, не факт, что будет ожидаемый результат.
Поэтому вызов должен быть организован строго по предлагаемой форме.
Есть такие. А вопроса нет...
Формальный параметр - это тот, с которым из основной программы происходит обращение к подпрограмме.
А фактический это тот, который принимает значение формального параметра в самой подпрограмме.
В общем случае эти параметры могут совпадать. Но это нежелательно