به طور کلی در زبان C فراخوانی یک تابع با نوشتن نام تابع و پارامترهای آن به صورت تک‌ دستور و یا در دستور جایگذاری انجام می‌شود. در صورت نداشتن پارامتر زوج، پرانتز خالی به کار می‌رود. راه دیگر برای فراخوانی تابع آن است که نام تابع در عبارت محاسباتی یا دستور خروجی به کار رود. به طور کلی اگر تابعی به صورت void اعلان شود، به صورت عملوند در هر عبارت قابل قبول در زبان C به کار می‌رود. در مثال زیر نام تابع در دستور خروجی به کار رفته است.

فاکتوریل عدد صحیح n را به دست آورید.
#include<stdio.h>
main ()
{
int n ;
scanf (“%d” , &n) ;
printf (“n = %d fact (n) = %d” , n , fact (n)) ;
}
int fact (int n)
{
int f = 1 , i ;
for (i =2 ; i<= n ; ++i)
f = f * i ;
return (f) ;
}
توابع، ازنظر نحوه انتقال اطلاعات از یک تابع فراخواننده به تابع فراخوانده شده و یا به عبارت دیگر ازنظر نحوه انتقال آرگومانها، به دو روش فراخوانی می‌شوند:
– فراخوانی با مقدار یا فراخوانی با ارزش

– فراخوانی با آدرس  یا فراخوانی با ارجاع .
در روش اول خود متغیرها یا آرگومانها به تابع فراخوانده شده (تابع فرعی) انتقال نمی‌یابد، بلکه فقط مقدار آنها یا به عبارت دیگر کپی آنها به تابع فراخوانده‌شده انتقال می‌یابد. بنابراین هر عملی که تابع فرعی روی نسخه دریافت شده از آرگومانها انجام دهد، در تابع فراخواننده آن منعکس نمی‌گردد؛ یعنی مقدار آن آرگومانها در تابع فراخواننده تغییر نخواهد کرد

مثال به برنامه زیر توجه کنید.
#include<stdio.h>
main ()
{
int n ;
long int factorial ;
printf(“n = “) ;
scanf (“%d” , &n) ;
factorial = fact(n) ;
printf (“\n fact (n) = %d” , factorial) ;
}
int fact (int n)
{
long int f = 1 ;
while (n >1)
f *= n– ;
return(f) ;
}
fact را درنظر بگیرید. تابع مزبور عدد صحیح n را به عنوان آرگومان دریافت و فاکتوریل آن را محاسبه می‌کند و برمی‌گرداند. در اینجا درواقع دو حافظه با نام n در برنامه وجود دارد: یکی در تابع اصلی که مقدار n را از طریق دستور ورودی scanf دریافت می‌کند و دیگری در تابع فرعی که نسخه‌ای از همان مقدار را دارد. وقتی که تابع فرعی عملیاتی روی n انجام می‌دهد در واقع این عملیات در روی متغیر n در تابع فرعی و یا روی محتوای حافظه‌ای که با نام n در تابع فرعی پیش‌بینی شده است انجام می‌گیرد و هیچ‌گونه تأثیری در مقدار n در تابع اصلی ندارد. به همین دلیل این گونه فراخوانی را فراخوانی با مقدار گویند.