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

اسال عن pointer في لغة C ?

مغلق
بدأه عبد المهيمن في 30 يناير 2003 · 8 رد · 1,045 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

اريد ان اسال عن pointers في لغة C ..هل من يشرحه بشكل مفصل؟

#2

بسم الله الرحمن الرحيم

اخي سأجيبك بشكل سريع لأني مشغول الأن

المؤاشرات هي عبارة عن متغيرات مثل المتغيرات الأخرى ولكنها تحتفظ بـ بعناوين الذاكرة كقيم لها ويتم استعمال المؤشرات عوضاً عن المصوفات وذلك لأن المصفوفات تكون محددة السعة بينما المؤشرات تستخدم في الأشياء التي لاتحدد سعتها الا وقت التشغيل مثلاً

وأسف لأن الإجابة قصيرة وليست وافية وسأعود لك فيما بعد

سلام

اخوك عبدالله عيد المحمادي

#3

شكرا على الاجابة Eidx00 .. وسوف اضيف:

كل متغير تقوم بتعريفه في برنامجك, يتم حجز مساحة في الذاكرة لهذا المتغير, حجم هذه المساحة يتعلّق بنوع المتغيّر... فمثلا char يأخذ بايت واحد.. و float يأخذ 2 بايت..... الخ.. اين يتم حجز هذه المساحة في الذاكرة؟ في مكان ما في الذاكرة, لمن اين بالتحديد... هذا أمر لا يعلمه أحد, ؟لأن نظام التشغيل هو الذي يحجز هذه المساحة, لكن يمكنك ان تسأل عن هذا الموقع خلال برنامجك(اي بعد ان يتم الحجز), فمثلا لو عرفت متغير بإسم X يمكنك ان تعرف مكانه في الذاكرة ... أو بكلمات أخرى يمكنك معرفة "عنوانه في الذاكرة", هذا العنوان يتم حفظه في متغيّر ... هذا المتغيّر يكون مؤشر.. اذن المؤشر هو متغير يحمل قيمة عنوان الذاكرة لمتغيّر آخر...

(( أعتذر لقصر الرد, لكني الان كتبت رد طويل ومفصّل وبالغلط ضغطت على Esc فضاع الرد , لهذا قمت بتابة هذا الرد من جديد وعلى استعجال))

#4

بسم الله الرحمن الرحيم

اهم مافي المؤشرات ( pointer ) انك تفهم فكرتها ،والباقي سهل

نبداء في طريقة تعريف pointer ، وراح استخدم مثال لذلك :

int* ptr;

في هذا المثال عرفنا مؤشر من نوع int ، وذلك عن طريق إضافة الرمز ( * ) والخطوة الثانيه لذلك هي ان نجعل هذا المؤشر يأشر على قيمه

فلو كان عندنا كالتالي

int x;

x=5;

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

ptr=&x;

ونلاحظ العلامة المميزه لإسناد address ، العلامه ( & )

ومعنى العباره السابقه : اسناد عنوان القيمة x في المتغير ptr

أي ان ptr يحتوي على عنوان المتغير x

ويجب ملاحظة ان للمؤشر والقيمه التي يؤشر عليها نفس النوع

-----------------------------------------------

أرجوا ان المثال واضح وكذلك الشرح ، لأن الإستخدام الحقيقي للمؤشرات يتحقق من خلال dynamic memory location ، وذلك عن طريق استخدام malloc و calloc

راح اشرحها إن شاء الله ، بس اذا فهمت السابق

#5

الاخوة ..Eidx00 ..إسماعيل ابراهيم..flower_ksa

شكرا جزيلا لمشاركتكم بالاجابة..امل منكم مزيد تفصيل اذا كان ذلك في وسعكم.

وعلى درب الخير نلتقي

#6

بسم الله الرحمن الرحيم

اضافه على رد الاخوان مع الشكر لهم .......

غالباً تستخدم الpointer في ال function وذلك لان ال function لا ترد الا قيمه واحده وبستخدم ال pointer نستطيع رد اكثر من قيمه وذلك باستقبال المتغيرات من نوع pointer .

#7

اخواني الكرام

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

فكما درست أن المؤشر يتم حجز مساحة على حسب نوعه في جزء من الذاكرة يطلق عليه

heap

وهناك ملاحظة مهمه لكل مبرمج ولعل الأساتذه في هذا المنتدى عارفينها ولكن نذكرها للإفادة

وهي أنه عند انشاء مؤشر في البرنامج

فلابد من عمل مسح له بعد انتهاء عمله لكي لا يبقى محجوز في الذاكرة

لأنه اذا لم يتم هدم الحجوزات بعد الانتهاء منها فسوف يسبب نزيف في الذاكرة في كل مرة يشتغل فيها

;delete pointer

أو

;delete [] pointer

وأخيرا هذى صفحة لعل فيها الفائدة للجميع

http://www.cplusplus.com/doc/tutorial/tut3-3.html

أرجو تصحيح كلامي اذا فيه خطأ لأني درست السي قبل عدة سنوات

ولكم تحياتي

#8

السلام عليكم ,,,

تفضل هذا الدرس:

http://www.c4arab.com/showlesson.php?lesid=1006

مع تحياتي ,,, طلال السبيعي.

#9

السلام عليكم

والله أنك رهيب أخوي طلال جزاك الله خير على هذي الدروس

وليتك تكمل الشرح في لغة السي حتى النهاية

ولك تحياتي(f)

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

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