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

۱۳۹۷-۰۸-۱۱
فراخوانی با اشاره گر در زبان C++ در فراخوانی با اشاره گر در زبان C++ یک کپی از آدرس آرگومان به تابع ارسال می شود به این معنی که تابع دسترسی مستقیم به مقدار آن آرگومان دارد و هر تغییری که درون تابع اعمال شود بر روی مقدار اصلی نیز تاثیر می گذارد. برای آن که بتوان یک متغیر را به ...

cpp function call by pointer 4658 فراخوانی با اشاره گر در زبان C++   آموزش زبان C++

فراخوانی با اشاره گر در زبان C++

در فراخوانی با اشاره گر در زبان C++ یک کپی از آدرس آرگومان به تابع ارسال می شود به این معنی که تابع دسترسی مستقیم به مقدار آن آرگومان دارد و هر تغییری که درون تابع اعمال شود بر روی مقدار اصلی نیز تاثیر می گذارد. برای آن که بتوان یک متغیر را به روش اجرا به یک تابع ارسال کرد، پارامتر آن تابع باید به صورت اشاره گر تعریف شود. برای نمونه تابع 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 Pointer) مقدار متغیر 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.
      * &a indicates pointer to a ie. address of variable a and 
      * &b indicates pointer to b ie. address of variable b.
   */
   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++ اولین بار در سورس سرا - آموزش برنامه نویسی. پدیدار شد.