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

متى يتم المرور بالمرجع أو المؤشر في C++: مبدأ توجيهي؟

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

When to Pass by Reference or Pointer in C  : A Guiding Principle?

التمرير حسب المرجع أو المؤشر في لغة C: مبدأ توجيهي

في لغة C، فهم متى يتم استخدام التمرير حسب المرجع ومتى يتم استخدام المؤشرات أمر بالغ الأهمية. يمكن أن تؤدي هذه الممارسة إلى تعليمات برمجية فعالة وخالية من الأخطاء.

مواقف عامة

  • تمرير std::string إلى دالة:

    • foo(std::string*) أو foo(std::string&)?
  • تمرير tr1::shared_ptr إلى دالة:

      foo(tr1::shared_ptr* ptr ) أو foo(tr1::shared_ptr& ptr)?

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

يوفر التمرير حسب المرجع الاتساق، حيث يمكن التعامل مع كل كائن كمرجع. ومع ذلك، فإن المرور بالمؤشر يوفر المرونة في التعامل مع القيم الخالية والقيم الحرفية.

تحليل المقتطف

المقتطف المحدد:

map> > خريطة الجوار؛ Vector* myFriends = new Vector(); myFriends->push_back(string("a")); myFriends->push_back(string("v")); myFriends->push_back(string("g")); adjacencyMap["s"] = Shared_ptr >(myFriends);

map> > adjacencyMap;
vector* myFriends = new vector();
myFriends->push_back(string("a"));
myFriends->push_back(string("v"));
myFriends->push_back(string("g"));
adjacencyMap["s"] = shared_ptr >(myFriends);

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

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

استخدام المراجع:
    للاستخدام الفعال للذاكرة وعندما يكون لديك وصول مضمون إلى الكائن المشار إليه.
  • استخدم المؤشرات:
  • عند التعامل مع nullptrs، أو العمل مع الذاكرة الديناميكية، أو عندما تحتاج إلى تعديل المراجع نفسها.
أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3