فراخوانی با مقدار در زبان C++ – آموزش زبان C++

cpp function call by value 4656 فراخوانی با مقدار در زبان C++   آموزش زبان C++

فراخوانی با مقدار در زبان C++

در این نوع فراخوانی فقط یک کپی از مقدار اصلی به تابع ارسال می شود و تغییرات اعمال شده در تابع تاثیری بر مقدار اصلی ندارد. در زبان C++ به طور پیشفرض آرگومان ها به صورت فراخوانی با مقدار (By Value) به توابع ارسال می شوند. به این معنی که توابع نمی توانند مقادیر اصلی آرگومان ها را تغییر دهند. برای نمونه تابع swap() را در نظر بگیرید:

// 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 x into y */
   return;
}

در مثال زیر قصد داریم از طریق فراخوانی با مقدار (By Value) مقدار متغیر a و b را با هم عوض کنیم:

#include <iostream>
using namespace std;
// function declaration
void swap(int x, int y);
int main () {
   // local variable declaration:
   int a = 100;
   int b = 200;
   cout << "Before swap, value of a :" << a << endl;
   cout << "Before swap, value of b :" << b << endl;
   // calling a function to swap the values.
   swap(a, b);
   cout << "After swap, value of a :" << a << endl;
   cout << "After swap, value of b :" << b << endl;
   return 0;
}
// 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 x into y */
   return;
}

امتحان کنید

زمانی که کد بالا توسط کامپایلر زبان C++ اجرا شود، نتیجه زیر را تولید خواهد کرد:

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() تغییر داده ایم، اما مقدار آن ها تغییر نکرده اند.

نوشته فراخوانی با مقدار در زبان C++ – آموزش زبان C++ اولین بار در سورس سرا - آموزش برنامه نویسی. پدیدار شد.

درباره نویسنده: administrator

ممکن است دوست داشته باشید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *