اريد ان اسال عن pointers في لغة C ..هل من يشرحه بشكل مفصل؟
اسال عن pointer في لغة C ?
بسم الله الرحمن الرحيم
اخي سأجيبك بشكل سريع لأني مشغول الأن
المؤاشرات هي عبارة عن متغيرات مثل المتغيرات الأخرى ولكنها تحتفظ بـ بعناوين الذاكرة كقيم لها ويتم استعمال المؤشرات عوضاً عن المصوفات وذلك لأن المصفوفات تكون محددة السعة بينما المؤشرات تستخدم في الأشياء التي لاتحدد سعتها الا وقت التشغيل مثلاً
وأسف لأن الإجابة قصيرة وليست وافية وسأعود لك فيما بعد
سلام
اخوك عبدالله عيد المحمادي
شكرا على الاجابة Eidx00 .. وسوف اضيف:
كل متغير تقوم بتعريفه في برنامجك, يتم حجز مساحة في الذاكرة لهذا المتغير, حجم هذه المساحة يتعلّق بنوع المتغيّر... فمثلا char يأخذ بايت واحد.. و float يأخذ 2 بايت..... الخ.. اين يتم حجز هذه المساحة في الذاكرة؟ في مكان ما في الذاكرة, لمن اين بالتحديد... هذا أمر لا يعلمه أحد, ؟لأن نظام التشغيل هو الذي يحجز هذه المساحة, لكن يمكنك ان تسأل عن هذا الموقع خلال برنامجك(اي بعد ان يتم الحجز), فمثلا لو عرفت متغير بإسم X يمكنك ان تعرف مكانه في الذاكرة ... أو بكلمات أخرى يمكنك معرفة "عنوانه في الذاكرة", هذا العنوان يتم حفظه في متغيّر ... هذا المتغيّر يكون مؤشر.. اذن المؤشر هو متغير يحمل قيمة عنوان الذاكرة لمتغيّر آخر...
(( أعتذر لقصر الرد, لكني الان كتبت رد طويل ومفصّل وبالغلط ضغطت على Esc فضاع الرد , لهذا قمت بتابة هذا الرد من جديد وعلى استعجال))
بسم الله الرحمن الرحيم
اهم مافي المؤشرات ( pointer ) انك تفهم فكرتها ،والباقي سهل
نبداء في طريقة تعريف pointer ، وراح استخدم مثال لذلك :
int* ptr;
في هذا المثال عرفنا مؤشر من نوع int ، وذلك عن طريق إضافة الرمز ( * ) والخطوة الثانيه لذلك هي ان نجعل هذا المؤشر يأشر على قيمه
فلو كان عندنا كالتالي
int x;
x=5;
فان طريقة التأشير على هذه القيمه كالتالي
ptr=&x;
ونلاحظ العلامة المميزه لإسناد address ، العلامه ( & )
ومعنى العباره السابقه : اسناد عنوان القيمة x في المتغير ptr
أي ان ptr يحتوي على عنوان المتغير x
ويجب ملاحظة ان للمؤشر والقيمه التي يؤشر عليها نفس النوع
-----------------------------------------------
أرجوا ان المثال واضح وكذلك الشرح ، لأن الإستخدام الحقيقي للمؤشرات يتحقق من خلال dynamic memory location ، وذلك عن طريق استخدام malloc و calloc
راح اشرحها إن شاء الله ، بس اذا فهمت السابق
الاخوة ..Eidx00 ..إسماعيل ابراهيم..flower_ksa
شكرا جزيلا لمشاركتكم بالاجابة..امل منكم مزيد تفصيل اذا كان ذلك في وسعكم.
وعلى درب الخير نلتقي
بسم الله الرحمن الرحيم
اضافه على رد الاخوان مع الشكر لهم .......
غالباً تستخدم الpointer في ال function وذلك لان ال function لا ترد الا قيمه واحده وبستخدم ال pointer نستطيع رد اكثر من قيمه وذلك باستقبال المتغيرات من نوع pointer .
اخواني الكرام
السلام عليكم ورحمة الله وبعد
فكما درست أن المؤشر يتم حجز مساحة على حسب نوعه في جزء من الذاكرة يطلق عليه
heap
وهناك ملاحظة مهمه لكل مبرمج ولعل الأساتذه في هذا المنتدى عارفينها ولكن نذكرها للإفادة
وهي أنه عند انشاء مؤشر في البرنامج
فلابد من عمل مسح له بعد انتهاء عمله لكي لا يبقى محجوز في الذاكرة
لأنه اذا لم يتم هدم الحجوزات بعد الانتهاء منها فسوف يسبب نزيف في الذاكرة في كل مرة يشتغل فيها
;delete pointer
أو
;delete [] pointer
وأخيرا هذى صفحة لعل فيها الفائدة للجميع
http://www.cplusplus.com/doc/tutorial/tut3-3.html
أرجو تصحيح كلامي اذا فيه خطأ لأني درست السي قبل عدة سنوات
ولكم تحياتي
السلام عليكم ,,,
تفضل هذا الدرس:
http://www.c4arab.com/showlesson.php?lesid=1006
مع تحياتي ,,, طلال السبيعي.
السلام عليكم
والله أنك رهيب أخوي طلال جزاك الله خير على هذي الدروس
وليتك تكمل الشرح في لغة السي حتى النهاية
ولك تحياتي(f)
هذا الموضوع مغلق.