الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سؤالين في c++ ممكن

مغلق
بدأه moonflower في 29 ديسمبر 2002 · 5 رد · 627 مشاهدة · في ارشيف قسم C/C++
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

ممكن تفيدوني في هذه السؤالين اتمنى ان القى لها حلا

السؤال الاول

كيف نفرق من اسلوب البرنامج بين call by refernce & call by value

ومتى نحتاج لاستخدام call by value

ومتى نحتاج لاستخدام call by refernce

السؤال الثاني

ماهي مهمة الpointer ومتى نحتاج لاستخدامه

مما اعرفه عنه انه بستخدم لاظهار عنوان المتغير الذي يحتوي على القيمه

المحددة وهذا عندم نضع الرمز & بجانب المتغير ،

ولكن بوضع الرمز * الجانب المتغير يعطي محتوى المتغير اي القيمه المحدده

اي نفس الفكره و النتيجه عندما لانضعها

فعندما نكتب y=6 هي نفسها y=6* فما الفائده منها وفي اي برنامج نحتاج

الى استخدامها

#2

يا سيدي بالنسبة لسؤالك الأول

الـ call by reference تحتفظ بقيمتها بعد انتهاء الدالة (function)

لكن الـ Call by value المتغير ترجع له قيمته التي كانت قبل استدعائها من الدالة

int x=3;

int y=5;

و انظر إلى هاتين الدالتين ، لا يوجد فرق بينهما إلا أن الأولى تستخدم متغيرات Call by reference

أما الثانية call by value

void swap_values(int& x, int& y)

{

	int temp;

	temp=x;

	x=y;

	y=temp;

}



void wrong_swap(int x, int y);

{

	int temp;

	temp=x;

	x=y;

	y=temp;

}

فلو نفذنا الدالة الأولى على الشكل

swap_values(x,y);

ستصبح قيمة X هي 5

أما y فستصبح قيمتها 3

بينما لو نفذنا الدالة الثانية على الشكل

wrong_swap(x,y);

فلن تتغير قيم x أو y بعد نهاية الدالة

لأنهما call by value فقط

طبعاً تتغير قيمهم داخل الدالة لكن بعد نهاية الدالة يرجع كل واحد لحال سبيله و لا كأنهم سووا حاجة :cool:

بالنسبة لسؤالك الثاني ففائدة المؤشرات إنك تقدر تسوي منها Array بدون ما تحدد لها الحجم و حجمها راح يتحدد حسب تنفيذ البرنامج

و بكذا ما تتوهق إنك حجزت أقل من المطلوب أو تحجز فوق الحاجة و تحجز مكان في الذاكرة ما له لازمة

#3

شكرااااااااااااا deep blue

لافادتي بهذا الجواب واتمنى لك التوفيق

بس احب انبهك على شي غلطت فيه اني انا بنت مو ولد اوكي

خلي بالك مره ثانيه

تحياتي لك

#4

يا سيدتي العتب على النظر

لأني عادة لا أنتبه للإسم

تحياتي

#5

السلام عليكم

بالنسبة للمؤشرات فهي تستخدم بدل array

لان array ذات طول محدد اما pointer ليس لها طول

في استخدامها في list

اختكم

لغة سي

#6

شكرا جزيلا لكي لغة سي على اهتمامك باضافتك هذه المعلومة لي

وحظا سعيدا لكي

هذا الموضوع مغلق.

مواضيع مشابهة