الفرق بين pass by value & pass by references
الكاتب: Mr.Aziz
تاريخ النشر: 2023-03-07 08:38:53
اهلآ وسهلآ
بالدروس السابقة تعلمنا عن الدوال و المرجع و struct
ولكن هذي المره سنتكلم عن الفرق بالمرور المعلومات بين References و بين value.
by value: هو يتم تمرير القيمة من خلال function call الى دالة وحده فقط. لايمكن تمرير القيمة الى أكثر من دالة
by References: يتم نسخ القيمة الى أكثر من دالة لامانع من ذالك و بنفس الوقت يتم حفظ القيمة الأصلية.
هنا عملت برنامج بسيط لنرى الفرق بينهم
أولآ بين السطر 5 و 7 عملت struct ليتم تخزين القيمة التي موجوده في المتغيرات
ثم أنشأت دالتين الى هم أستقبال المعلومة info و يتم إظهار المعلومة Display
بداخل main انا فقط وضعت داخل القوسين أسم struct لاني أريد تمرير القيمة الى المتغير الموجود بداخل strcut.
ستلاحظ الأن لدينا دالتين
info: يتم كتابة الأسم والعمر من قبل المستخدم و الأن تم حفظ القيمة بداخل المتغيرات التي موجودة في struct.
بعد كذا انشئت دالة display ليتم عرض القيم التي مخزنة في المتغيرتين هم name و age
pass by value المعلومات ستقف الى الدالة info فقط. لايمكن أن تستنسخ مثل اي دالة التي تم شرحها بالدروس السابقة.
لو كتبت طباعة بداخل هذي الدالة Info ستظهر المعلومات مثل ماهي.
ستلاحظ في السطر 24 تم أمر الطباعة بداخل الدالة info
وستلاحظ النتيجة تحت هو
your name is: aziz your age is 43
هذا تعني pass by value.
اممم ماذا لو مررنا القيم الى الدالة display
ماذا سيحدث القيم التي كانت موجوده ؟
تعال نشوف النتيجة
ستلاحظ الأن تم أمر الطباعة في الدالة display
لما عملنا run ستلاحظ النتيجة هو لايوجد شي أو فارغ
your name is: your age is : 642.....
هذي القيمة لامعنى لها. بسبب القيمة لم يتم أستنساخ الى دالة اخرى و فهمنا القيم لن يتم أستنساخ و فقط يعرض من أول دالة فقط.
طيب مالحل لذالك؟
نجي شي اسمه pass by refences
من خلال وضع العلامة & قبل المتغير thismyname
يجب أن تضعه في info ليتم أستنساخ المعلومات التي تم تمريره في دالة info الى دالة Display
مثل هكذا:
ستلاحظ الأن بالسطر 9 و 19 تم وضع علامة & ليتم أستنساخ القيم الى دالة بعدها.
لما المستخدم كتب الأسم ثم العمر و ثم تم طباعتها ف الدالة display
سيظهر النتيجة هو
your name is: aziz your Age is 33
هذا يسمى refences لسبب وجود أستنساخ من القيمة التي قبلها.
هنا صورة بشكل أوضح
ستلاحظ في pass by value
تم نقل القيمة الى مكان اخر فقط.
ولكن pass by refences
يتم أستنساخ القيمة الى مكان أخر ولكن موجود بالمتغير الأصلي.