فراخوانی با مقدار (Call By Value) در زبان C
در فراخوانی با مقدار (Call By Value) فقط یک کپی از مقدار اصلی به تابع ارسال می شود و تغییرات اعمال شده در تابع تاثیری بر مقدار اصلی ندارد. در زبان C به طور پیشفرض آرگومان ها به صورت فراخوانی با مقدار (By Value) به توابع ارسال می شوند. به این معنی که توابع نمی توانند مقادیر اصلی آرگومان ها را تغییر دهند. برای نمونه تابع swap() را در نظر بگیرید:
1 2 3 4 5 6 7 8 | /* function definition to swap the values */ void swap(int x, int y) { int temp; temp = x; /* save the value of x */ x = y; /* put y into x */ y = temp; /* put temp into y */ return; } |
در مثال زیر قصد داریم از طریق فراخوانی با مقدار (By Value) مقدار متغیر a و b را با هم عوض کنیم:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #include <stdio.h> /* function declaration */ void swap(int x, int y); int main () { /* local variable definition */ int a = 100; int b = 200; printf("Before swap, value of a : %d\n", a ); printf("Before swap, value of b : %d\n", b ); /* calling a function to swap the values */ swap(a, b); printf("After swap, value of a : %d\n", a ); printf("After swap, value of b : %d\n", b ); return 0; } |
زمانی که کد بالا توسط کامپایلر زبان C و اجرا شود نتیجه زیر را تولید خواهد کرد:
1 2 3 4 | Before swap, value of a :100 Before swap, value of b :200 After swap, value of a :100 After swap, value of b :200 |
اگر به نتیجه مثال بالا توجه کنید، متوجه خواهید شد که با این که ما مقدار متغیرهای a و b را درون تابع swap() تغییر داده ایم، اما مقدار آن ها تغییر نکرده اند.
هیچ نظری ثبت نشده است