"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > ## متى يجب عليك استخدام المراجع كمعلمات دالة في لغة C++؟

## متى يجب عليك استخدام المراجع كمعلمات دالة في لغة C++؟

تم النشر بتاريخ 2024-11-07
تصفح:398

## When Should You Use References as Function Parameters in C  ?

تمرير الوسائط في لغة C: فهم المراجع

في لغة C، يتم تحديد سلوك معلمة الوظيفة حسب نوعها. أحد الفروق الحاسمة هو بين "التمرير حسب القيمة" و"التمرير حسب المرجع".

لماذا تستخدم المراجع في معلمات الوظيفة؟

يتم استخدام المراجع في معلمات الوظيفة لشخصين الأسباب الأساسية:

  • لتعديل الوسيطة: تسمح المراجع للدالة بتعديل قيمة الوسيطة التي تم تمريرها. وهذا يعني أن الوظيفة يمكنها إجراء تغييرات ستكون مرئية للمتصل.
  • لتجنب نسخ الكائنات:
  • يمكن أن يؤدي تمرير الكائنات الكبيرة حسب المرجع إلى تحسين الأداء بشكل ملحوظ. عندما يتم تمرير معلمة حسب المرجع، يتم تمرير عنوان الذاكرة الخاص بها فقط، بدلاً من الكائن بأكمله. يؤدي هذا إلى تجنب عملية النسخ الباهظة الثمن.
مثال:

ضع في اعتبارك الكود التالي:

void get5and6(int *f ، كثافة العمليات * ق) { *و = 5؛ *س = 6؛

void get5and6(int *f, int *s)
{
    *f = 5;
    *s = 6;
}

void get5and6(int &f, int &s) { و = 5؛ ق = 6؛

void get5and6(int &f, int &s)
{
    f = 5;
    s = 6;
}

التمرير بالمرجع مقابل المرور بالمؤشر

التمرير بالمرجع والتمرير بالمؤشر متشابهان من حيث أن كلاهما يتضمن تمرير عنوان الوسيطة. ومع ذلك، هناك بعض الاختلافات الدقيقة:

المؤشرات:
    تشير المؤشرات بوضوح إلى أن الوظيفة قد تعدل قيمة الوسيطة.
  • المراجع:
  • توفر المراجع طريقة أكثر مباشرة وملاءمة للوصول إلى الوسيطة، كما لو كانت متغيرًا محليًا.
  • بشكل عام، يكون التمرير بالمؤشر أكثر ملاءمة عندما يُتوقع من الدالة تعديل قيمة الوسيطة، بينما يُفضل التمرير حسب المرجع عندما يتم الوصول إلى الوسيطة فقط أو عندما لا يعرف المتصل ما إذا كان سيتم تعديل القيمة.

متى يتم استخدام المراجع

المراجع مفيدة بشكل خاص في السيناريوهات التالية:

تعديل قيمة الوسيطة داخل الوظيفة.

    تجنب نسخ الكائنات لتحسين الأداء.
  • تمرير كبير أو كائنات معقدة دون تكبد نفقات كبيرة.
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3