الدرس عن References في اللغة C++
الكاتب: Mr.Aziz
تاريخ النشر: 2023-03-05 10:18:30
اهلآ وسهلآ.
في هذا الدرس سوف أشرح عن Reference و ماهو reference.
أذا قد سمعت عنها و سمعت عن pointer بينهم أختلاف كبير جدآ سوف نشرح عنها المره القادمة.
الأن سوف نركز على Reference و كيف يتم عن طريق memory address.
ماهو Rerefence؟ بما يسمى المرجع, يتم نسخ القيمة التي موجوده بالمتغير الحالي الى متغير أخر و بشرط يكون نفس Memory address ولايختلف عنها.
بما يعني في حال تريد أن تنسخ هذي القيمة "Aziz" من المتغير Name الى متغير أخر بأسم myname يكون مع هذي علامة & سيتم نسخ القيمة "Aziz" و يتم نسخ memroy address.
سوف أعمل مثال ليتم توضيح الفكرة عنها:
اولآ تم أنشاء متغير name في السطر 8
و تم وضع قيمة Aziz فيها
و بالسطر 10 تم أنشاء متغير ولكن تم وضع علامة & معاها آي تصبح هكذا
&Myname
بسبب هذي حركة أريد أنسخ القيمة مع memory address الى متغير أخر وبنفس memory address بضبط.
بعد كذا عملنا هكذا
&Myname = name
الأن تم النسخ القيمة "Aziz" من المتغير name الى Myname مع Memory Address بكذا يسهل عليك في استخدامات عديدة منها في struct
ممكن تسأل و تقول طيب لو حذفنا العلامة & النتيجة تصبح مثل ماهي ؟ ماهو الفرق اذآ؟ مثل هكذا
الفرق كبير جدآ في حال وجود علامة & و عدم وجوده.
في حال تريد تعرف الفرق سوف أعرض لكم مع قراءة memory address سيتضح الفرق.
هنا الصوره مع العلامة &:
الأن قمت بوضع علامة & في cout ليتم قراءت memory address
ستلاحظ الأن مع أول متغير بأسم Address هو 0x61fef0
بعد ماعملت reference مثل ماشرحنا المره سابقة
أصبح متغير ثاني بنفس address هو 0x61fef0
مثل ماهو موضح في output
بما يعني تم نسخ القيمة مع address نفسه الى مكان اخر.
الأن سوف أضع صوره بدون وضع علامة &
ستلاحظ يوجد أختلاف في address
ماذا يعني الأن؟
المتغير name يكون له address خاص هو 0x61fef4
لما وضعنا المتغير أخر بأسم Myname ثم يساوي name
للعلم Myname بدون علامة & سيتم أنشاء address أخر و خاص به وستلاحظ يكون بأسم 0x61fedc
هنا الأختلاف و هي فقط يتم وضع القيمة من مكان في ذاكرة الى مكان أخر
بدلآ عن نسخ القيمة على نفس الذاكرة
الأن فهمنا هذي علامة & تعني المرجع من المتغير يتم وضعه مع يساوي مثل ماشرحنا فوق
وأنتهينا :)