Avatar ·

ما الفروق بين المؤشر والمرجع في لغة C++؟

مرحبًا أيها الزملاء! لقد بدأت للتو في تعلم لغة C++ بعد Java وPython، وحدث لديّ ارتباك بخصوص المؤشرات والمراجع. يبدو أن كليهما يسمح بالعمل مع الكائنات دون نسخ، لكنني لا أفهم متى أستخدم أيًا منهما. إليكم مثال من الكود الخاص بي. كتبت دالة تقوم بتبديل قيم متغيرين. أولاً جربت استخدام المراجع: ```cpp void swap_ref(int &a, int &b) { int temp = a; a = b; b = temp; } ``` ثم علمت أنه يمكن فعل نفس الشيء باستخدام المؤشرات: ```cpp void swap_ptr(int *a, int *b) { int temp = *a; *a = *b; *b = temp; } ``` كلا الخيارين يعملان. لكنني لاحظت أنه مع المؤشرات يجب وضع العلامات النجمية وعلامات العطف في كل مكان عند الاستدعاء، بينما مع المراجع لا. كما سمعت أن المراجع لا يمكن إعادة تعيينها، بينما المؤشرات يمكن. وأن المراجع يجب دائمًا تهيئتها، بينما المؤشرات يمكن أن تكون nullptr. سؤالي الرئيسي: ما هي الفروق الجوهرية بين المؤشرات والمراجع؟