وقتی مقداری به تابع ارسال می شود یک کپی از محتویات آرگومان به پارامتر نسبت داده می شود یعنی در اصل پارامتر یک کپی از متغیری است که به تابع ارسال می شود و مقدار آن خارج از تابع تغییر نمی کند. این روش ارسال یک متغیر با مقدار (passing variable by value) نامیده می شود. که روش معمول است. روش دیگر ارسال یک متغیر به تابع به صورت مرجع (called by reference) است. در این حالت به جای یک کپی از مقدار متغیر آدرس آن به تابع داده می شود بنابراين نام متغیر و نام پارامتربه یک مکان حافظه ارجاع می کنند. یعنی پارامتر متغیر جدیدی نیست بلکه همان متغیر قبلی با نام جدید است. در این حالت وقتی متغیر درون تابع تغییر می کند متغیر خارج از تابع هم تغییر می کند.
برای تعيين پارامتری به صورت مرجع کافی است علامت & (عملگر آدرس) قبل از پارامتر تابع در اعلان اضافه شود.
مثال. متغير m به صورت مقداری به تابع ارسال شده است. خروجی تابع عدد 1 است.
#include <iostream.h>
void f(int n) {
n = 4;
}
int main() {
int m = 1;
cout << m << "\n";
f(m);
cout << m << "\n";
}
مثال. پارامتر number مرجع است.
#include <iostream.h>
void demo(float &number);
int main () {
float num1;
cout << "Please enter a number. \n";
cin >> num1;
cout << "Before the demo function your number is " << num1 << "\n";
demo(num1);
cout << "After the demo function your number is still " << num1 << "\n";
return 0;
}
void demo(float &number) {
number = number * 3;
cout << "Inside the demo function the number is now " << number << "\n";
}
برای تعيين پارامتری به صورت مرجع کافی است علامت & (عملگر آدرس) قبل از پارامتر تابع در اعلان اضافه شود.
مثال. متغير m به صورت مقداری به تابع ارسال شده است. خروجی تابع عدد 1 است.
#include <iostream.h>
void f(int n) {
n = 4;
}
int main() {
int m = 1;
cout << m << "\n";
f(m);
cout << m << "\n";
}
مثال. پارامتر number مرجع است.
#include <iostream.h>
void demo(float &number);
int main () {
float num1;
cout << "Please enter a number. \n";
cin >> num1;
cout << "Before the demo function your number is " << num1 << "\n";
demo(num1);
cout << "After the demo function your number is still " << num1 << "\n";
return 0;
}
void demo(float &number) {
number = number * 3;
cout << "Inside the demo function the number is now " << number << "\n";
}