فراخوانی با مقدار و با ارجاع در ++C :

در زبان برنامه‌نویسی ++C، دو روش برای فراخوانی توابع وجود دارد: فراخوانی با مقدار و فراخوانی با ارجاع. در این مقاله، به بررسی این دو روش می‌پردازیم و تفاوت‌های آن‌ها را توضیح می‌دهیم.

فراخوانی با مقدار (Call by Value):
در فراخوانی با مقدار، مقادیر ورودی به تابع به صورت یک کپی از مقادیر اصلی به تابع منتقل می‌شوند. به عبارت دیگر، تغییراتی که در داخل تابع انجام می‌شود، تنها روی کپی‌های مقادیر ورودی تاثیر می‌گذارد و مقادیر اصلی تغییر نمی‌کنند. این روش برای استفاده از توابعی که نیاز به تغییر مقادیر ورودی ندارند یا تغییر مقادیر ورودی تاثیری در برنامه ندارد مناسب است.

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

برای استفاده از فراخوانی با ارجاع در ++C، از استفاده از عملگر & قبل از نام متغیر مورد نظر استفاده می‌شود. به عنوان مثال، اگر متغیری به نام x داریم و می‌خواهیم آن را به عنوان ورودی به تابعی ارسال کنیم تا مقدار آن تغییر کند، می‌توانیم از &x استفاده کنیم.

مقایسه فراخوانی با مقدار و فراخوانی با ارجاع:
– در فراخوانی با مقدار، مقدار ارسالی به تابع تنها در داخل تابع تغییر می‌کند و مقدار اصلی تغییر نمی‌کند. در فراخوانی با ارجاع، مقدار ارسالی به تابع بر روی مقدار اصلی تغییر می‌کند.
– در فراخوانی با مقدار، برای ارسال مقادیر به تابع، از کپی‌های آن‌ها استفاده می‌شود. در فراخوانی با ارجاع، ارجاع به مقادیر اصلی ارسال می‌شود.
– فراخوانی با مقدار به صورت پیش‌فرض در ++C استفاده می‌شود. در صورت نیاز به استفاده از فراخوانی با ارجاع، باید از عملگر & قبل از نام متغیر مورد نظر استفاده کنیم.

در نهایت، باید توجه داشت که استفاده از فراخوانی با ارجاع باید با دقت و مراقبت انجام شود، زیرا تغییراتی که در داخل تابع انجام می‌شود ممکن است برنامه را به طور غیرمنتظره تحت تاثیر قرار دهد. بنابراین، برنامه‌نویس باید با دقت و با توجه به نیازهای خود، روش مناسب را انتخاب کند.

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

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