++C

الدرس عن 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 

هنا الأختلاف و هي فقط يتم وضع القيمة من مكان في ذاكرة الى مكان أخر 

 

بدلآ عن نسخ القيمة على نفس الذاكرة 

 

الأن فهمنا هذي علامة & تعني المرجع من المتغير يتم وضعه مع يساوي مثل ماشرحنا فوق 

 

وأنتهينا :)