وظیفه
روشی بنویسید که مقادیر دو متغیر را تعویض کند.
ویژگی های این کار این است که ما به تغییرات ایجاد شده در رویه نیاز داریم تا به برنامه فراخوانی شناخته شود.
بیایید سعی کنیم روال را به این صورت بنویسیم:
void Swap (int a, int b) // با چنین توصیفی از پارامترهای رویه،
{ // مقادیر آرگومان ها (x و y) کپی خواهند شد،
int c; // متغیرهای a و b متغیرهای مستقلی هستند که به x و y مرتبط نیستند
c = a; a = b; b=c;
}
main()
{
int x=1, y=2;
مبادله (x, y); // مقادیر متغیرهای x و y (آگومان ها) در پارامترهای a و b کپی می شوند.
cout << "x=" << x<< "، y=" << y; // x=1، y=2
}
اگر این برنامه را اجرا کنید، می بینید که مقادیر متغیرهای x
و y
تغییر نکرده است. برای اینکه پارامترها مقادیر آرگومانها را تغییر دهند، باید از عبور دادهها با مرجع استفاده کنید. برای انجام این کار، پس از نام نوع داده در سربرگ زیربرنامه باید علامت & code> ("ampersand") را قرار دهید.
void Swap ( int & a، int & b ) // اکنون متغیرهای a و b آدرس متغیرهای x و y را در حافظه دریافت می کنند.
{
int c;
c = a; a = b; b=c;
}
استفاده: اگر یک آرگومان را با مرجع ارسال میکنید، آنگاه فقط نام متغیر (نه یک عدد و نه یک عبارت حسابی) میتواند در این مکان هنگام فراخوانی رویه باشد!< br />
روشی را مانند این فراخوانی نکنید:
تعویض (x، 4 );
تعویض (5+x، y);