‫أهلا ومرحبا.
‫في هذه المحاضرة سوف نتعلم عن المراجع وبدائل المؤشرات ، وسنرى سبب اختلافها
‫، ولماذا قد نرغب في استخدامها.
‫دعونا نتعمق ونرى.
‫بالإضافة إلى المؤشرات ، هناك مفهوم مشابه جدًا يسمى المرجع.
‫الآن كل من المؤشرات والمراجع هي في الأساس مجرد عنوان ذاكرة.
‫كلاهما يخزن مرجعًا حيث يمكن العثور على متغير آخر ، وبهذه الطريقة يكونان متشابهين بشكل لا
‫يصدق.
‫يعود الفرق بين الاثنين إلى ما إذا كان يمكن إعادة تعيينهما.
‫في الأساس ، هل يمكنهم الإشارة إلى عنوان مختلف بعد إنشائه لأول مرة؟
‫في حالة وجود مؤشر ، تكون الإجابة نعم.
‫يمكنك تغيير المؤشر ليشير إلى عنوان ذاكرة جديد ، أو ممثل جديد ، أو مكون جديد متى شئت ، طالما
‫أنه يحتوي على النوع الصحيح.
‫من ناحية أخرى ، لا يمكن إعداد المرجع إلا مرة واحدة عند إنشائه لأول مرة للإشارة إلى متغير
‫آخر ، ولا يمكن تغييره مرة أخرى بعد ذلك.
‫وهذه ميزة أمان لأن إعادة تعيين المتغيرات يمكن أن تؤدي إلى مشاكل حيث قد تختفي هذه
‫المتغيرات أو حيث تقوم بتعيين هذا المؤشر على قيمة خالية.
‫المؤشر الفارغ هو في الأساس مؤشر يشير إلى لا شيء ، ومحاولة القيام بأشياء باستخدام مؤشر يتم تعيينه
‫على لا شيء يمكن أن يؤدي في الواقع إلى تعطل محركك ، وهي ليست نتيجة مثالية مع المراجع لأنه يتعين عليك منحهم
‫قيمة عندما قم بإنشائها.
‫لا يمكن أن تكون فارغة ، لذلك لا يمكنك الحصول على هذه الأعطال الفارغة في المؤشر.
‫لذلك دعونا نبدأ في إلقاء نظرة على بعض بناء الجملة المتضمن.
‫لذلك عند الوصول إلى المحتوى باستخدام مؤشر ، يجب عليك استخدام بعض القواعد الخاصة.
‫يجب عليك وضع هذه النجمة أمام المؤشر للتأكد من حصولك على القيمة في المؤشر ، وليس
‫عنوان الذاكرة مع المراجع لأنك لا تحتاج حقًا إلى الحصول على عنوان الذاكرة.
‫يمكنك فقط استخدام المتغير كما لو كان المتغير الذي يشير إليه.
‫ليس عليك استخدام أي بناء جملة خاص.
‫يوجد الآن الوصول إلى العنوان ، لذلك باستخدام المؤشرات ، يمكنك الحصول على العنوان تلقائيًا.
‫عند استخدام المتغير مع مرجع ، يجب عليك استخدام صيغة خاصة.
‫للقيام بذلك ، يجب عليك استخدام عنوان المشغل وسيحصل بشكل أساسي على نفس العنوان
‫مثل المتغير الأصلي.
‫ثم هناك تغيير العنوان بمؤشر.
‫لقد رأينا أنه يمكنك تعيين العنوان واستخدام عنوان المشغل للقيام بذلك مع المراجع.
‫هذا غير مسموح به ، لذلك لا توجد صيغة له.
‫وأخيرًا ، ماذا لو أردنا تغيير القيمة التي نشير إليها ، ليس العنوان ، ولكن القيمة الفعلية
‫المخزنة في ذلك العنوان؟
‫حسنًا ، باستخدام المؤشرات ، يجب عليك مرة أخرى استخدام بعض القواعد الخاصة.
‫علينا أن نضع تلك النجمة ثم نخصص شيئًا ما.
‫لذا فإن مؤشر الممثل الذي تقوم بتعيينه لمؤشر الممثل النجمي مع المراجع مرة أخرى لأنه لا يمكنك تغيير العنوان الفعلي ،
‫فأنت لست بحاجة إلى أي بناء جملة إضافي.
‫يمكننا حذف الصيغة الإضافية والحصول فقط على إشارة الممثل تساوي.
‫الفاعل يعني أنك تقوم بالكتابة فوق القيمة في الموقع المشار إليه.
‫لذلك هذا كل شيء نظري بعض الشيء.
‫لنحصل على مثال حقيقي.
‫لذلك إذا كان لدينا عوامة ربما كانت تخزن الضرر الذي لحق بنا في اللعبة وفي ذلك نقوم بتخزين الضرر الحالي
‫يتم ضبطه على الصفر.
‫لم يلحق بنا أي ضرر.
‫الآن قد نرغب في إنشاء مرجع لهذا بدلاً من النسخ حوله ، قد نرغب في تمريره
‫إلى دالة ، ولكن دون تغييره فعليًا.
‫الطريقة التي يمكننا بها القيام بذلك هي الحصول على تعويم ثم وضع علامة العطف بعد التعويم.
‫وعلامة العطف تقول أن هذا إشارة إلى عدد عشري.
‫إنه ليس تعويمًا جديدًا بحد ذاته ، ولا يخصص أي ذاكرة عائمة.
‫إنه يخصص فقط ذاكرة المؤشر.
‫ولذا يمكننا أن نسمي هذا المرجع الضرر ويمكننا جعله مساويًا للضرر.
‫لا يتعين علينا أخذ عنوان أو القيام بأي شيء من هذا القبيل.
‫إنه يعرف تلقائيًا ، حسنًا ، هذا مرجع وهذا متغير.
‫إذن ما تحاول القيام به هنا هو إعداد مرجع لهذا المتغير.
‫وبالتأكيد ، إذا ذهبنا وقمت بتسجيل الدخول ، فيمكننا طباعة هذا كما لو كان مجرد تعويم عادي
‫، لذا يمكننا أن نقول تلف القولون ثم النسبة المئوية F ومن ثم يمكننا هنا القيام فقط بطباعة الضرر المرجع.
‫نحن لا نحتاج إلى أي بناء جملة خاص.
‫يمكننا استخدامه كمتغير عادي.
‫دعنا نمضي قدمًا ونبدأ التشغيل بعد التجميع ، ونلقي نظرة على سجل الإخراج لدينا ، وبالتأكيد
‫، فإن الضرر يخرج من الصفر ، وهي القيمة التي حددناها.
‫لكن هذا لا يثبت بالضرورة أنني لم أنسخ هذا المتغير الأصلي.
‫لنفترض أن تحداك في محاولة تغيير القيمة ومعرفة ما سيحدث.
‫لذا استخدم المرجع ، الإشارة إلى الضرر لتعيين قيمة جديدة ثم اطبع القيمة الأصلية بحيث تكون
‫القيمة الأصلية بجوار القيمة المرجعية وإلقاء نظرة.
‫هل هما متماثلان أم مختلفان؟
‫أنت تغير المرجع فقط ، لكن هل يغير الأصل أيضًا؟
‫لأن هذا يعني أنهما نفس المتغير.
‫أوقف الفيديو واذهب.
‫تمام.
‫مرحبًا بعودتك.
‫لذلك دعونا نعطي هذا طعنة.
‫إذن لتغيير المرجع الآن ، سنفعل الضرر ref يساوي.
‫وهذه المرة سأقول إننا تسببنا في خمسة أضرار ولاحظت أنني لم أضطر لاستخدام أي صيغة خاصة
‫هنا.
‫إنه لا يعيد تعيين المرجع لأننا أعلناه بالفعل وقمنا بإعداد مرجعه على ذلك السطر
‫الأول عند إنشائه.
‫لا يمكننا أن نفعل ذلك مرة أخرى.
‫الآن يمكننا فقط تحديد القيمة.
‫ما يمكنني فعله الآن هو أننا حصلنا على الضرر ، المرجع موجود في السجل.
‫دعونا أيضًا نضع ضررًا ونسبة f على نفس الخيط ثم نمرر الضرر هنا أيضًا.
‫وبعد ذلك سنقوم بالتجميع وإلقاء نظرة.
‫دعنا نضغط على play ، نذهب إلى سجل الإخراج لدينا ، وبالتأكيد ، فإنه يطبع مرجع الضرر والضرر لأن كلاهما
‫له القيمة الجديدة التي حددناها بقيمة خمسة.
‫إذن ، من حيث الجوهر ، ما لدينا هنا هو متغيرين يشيران إلى نفس قطعة الذاكرة.
‫يمكنك القول تقريبًا أنهما نفس المتغير ، لكن بأسماء مختلفة.
‫لذلك فإن هذا له ميزة عدم الحاجة إلى نسخة ، تمامًا مثل المؤشر ، ولكن له أيضًا الكثير من الفوائد
‫لأنه أسهل بكثير في الاستخدام.
‫لا نحتاج إلى كل هذه البنية الإضافية كما أنها أكثر أمانًا للاستخدام.
‫لذلك طالما أننا لا نحتاج إلى إعادة الإشارة إلى أي شيء ، فإن استخدام المراجع هو الأفضل بشكل عام.
‫لنقم الآن بمراجعة سريعة لبعض الرموز التي نستخدمها هنا لأنها يمكن أن تكون مربكة بعض الشيء.
‫يتم استخدامها كثيرًا في C ++.
‫لذا ، دعنا نلقي نظرة على رموز العطف والنجمة في سياقها وما تعنيه.
‫لذلك عندما نستخدمها ، لذلك عندما نستخدمها في تعبير ، فإليك بعض الأمثلة البرمجية.
‫قد ترى النجمة قبل المتغير.
‫قد ترى علامة العطف قبل المتغير.
‫ماذا يعني هذا؟
‫حسنًا ، مع رمز النجمة ، فإن صيغة وضعه قبل المتغير تعني أننا نحصل على المحتويات
‫في مؤشر الفاعل الآن باستخدام علامة العطف.
‫إذا وضعت علامة العطف أمام متغير أو أمام مرجع لمتغير ، فهذا يعني
‫أنه يحصل على عنوان هذا المتغير.
‫إنه الحصول على عنوان الممثل أو العنوان المشار إليه بالمرجع.
‫الآن عندما نعلن أننا نستخدمه في نوع المتغير ، فإن النجوم وعلامة العطف لها معاني
‫معاكسة تقريبًا.
‫لذا فإن النجمة تعني أن هذا مؤشر لممثل جديد ، وعلامة العطف تعني أن هذه إشارة إلى
‫ممثل جديد.
‫لذا تذكر فقط هذا ، أن هناك مجموعة مختلفة تمامًا من المعاني ، سواء
‫كنت تستخدمها مع متغير في تعبير أو ما إذا كنت تستخدمها في النوع الذي يوضح متغيرًا.
‫الآن ، لن أخوض في تفاصيل كثيرة ، ولكن لإضافة إهانة للإصابة ، يمكن أن
‫يكون لها في الواقع معاني أخرى في سياقات أخرى يمكن أن تعني علامة العطف بعض الشيء ، والنجم ، كما
‫رأينا بالفعل ، يمكن يمكن استخدامها مع سلاسل في سجل U.
‫إذن ، هذا ليس بالضرورة كل معاني هذين الرمزين ، لكنهما إلى حد كبير
‫كل المعاني المهمة التي تشير إلى المؤشرات والمراجع.
‫أشياء عظيمة.
‫لذلك تعلمنا عن المؤشرات والمراجع وكيفية ارتباطها ببعضها البعض ، وكيف تختلف ،
‫ولماذا قد نرغب في استخدامها.
‫سأراك في المحاضرة القادمة.