حال ببینیم وقتی مقادیری را به تابع گذر میدهیم چه اتفاقی رخ میدهد. در اینجا برنامه سادهای را ملاحظه میکنید که دو مقدار صحیح ۴ و ۷ را به تابعی به نام gets2 میفرستد.
main ()
{
int x = 4 , y = 7 ;
gets2 (x , y) ;
}
void gets2(xx , yy) /* print out values of two arguments */
int xx , yy ;
{
printf (“first is %d , second is %d” , xx , yy) ;
}
این تابع عمل خاصی انجام نمیدهد، فقط دو مقداری را که به آن گذر داده شده است چاپ میکند. اما تابع مزبور نکته مهمی را نشان میدهد و آن اینکه تابع دو مقدار از برنامه فراخواننده آن دریافت میکند و آنها را به طور جداگانه، یعنی بهصورت دوبله، در فضای حافظه خاص خودش ذخیره میکند. حتی تابع میتواند به آن دو مقدار، اسامی متفاوتی (مانند مثال مورد نظر ما) که فقط در تابع مزبور شناخته شده است اختصاص دهد که در اینجا این اسامی جدید نیز xx و yy است و به جای x و y به کار رفته است (البته میتوانست همان x و y نیز به کار برده شود).
شکل این سازوکار را نمایش میدهد. حال این تابع میتواند روی متغیرهای جدید xx و yy، بدون اینکه تأثیری روی x و y داشته باشد، هر عملی را انجام دهد (اگر اسامی یکسان انتخاب میشد، باز هم در شیوه کار تغییری حاصل نمیشد).
انتقال مقادیر به تابع: