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

cpp function call by reference 4660 فراخوانی با ارجاع در زبان C++   آموزش زبان C++

فراخوانی با ارجاع در زبان C++

در این نوع فراخوانی یک کپی از مرجع (Reference) آرگومان به تابع ارسال می شود به این معنی که تابع دسترسی مستقیم به مقدار آن آرگومان دارد و هر تغییری که درون تابع اعمال شود بر روی مقدار اصلی نیز تاثیر می گذارد. برای آن که بتوان یک متغیر را به روش اجرا به یک تابع ارسال کرد، پارامتر آن تابع باید مانند مثال زیر تعریف شود. برای نمونه تابع swap() را در نظر بگیرید:

// function definition to swap the values.
void swap(int &x, int &y) {
   int temp;
   temp = x; /* save the value at address x */
   x = y;    /* put y into x */
   y = temp; /* put x into y */
  
   return;
}

در مثال زیر قصد داریم از طریق فراخوانی با ارجاع (By Reference) مقدار متغیر 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 using variable reference.*/
   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 at address 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 :200
After swap, value of b :100

نتیجه کد بالا به خوبی نشان می دهد که بر خلاف فراخوانی با مقدار، در فراخوانی با ارجاع تغییرات اعمال شده درون تابع بر روی متغیرها تاثیر گذاشته است.

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

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

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

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

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