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

ماهي الفائدة الحقيقية للمؤشرات في البرمجة

بدأه aziz nor في 12 يونيو 2008 · 7 رد · 1,348 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم والصلاة والسلام علي اشرف المرسلين اما بعد

يعتبر موضوع المؤشرات من المواضيع الساخنة في البرمجة بلغة الس بلس بلس

ولما يكتنفه من غموض ندعوا اصحاب الخبرة من المبرمجين الي توضيح الفائدة وليس المعني من المؤشرات

لاننا لا حضنا من خلال التعريف البرمجي لها اننا بمقدورنا الاستغناء عنها تجنا لمشاكل خصوصا منها مشكل ادارة الذاكرة

الامر الذي قد يتسبب في مشكال ليس علي المستوي البرمجي فقط بل علي مستوي الفزيائي

للعتاد

ولاهمية الامر ندعوا جميع الاخوة الي توضيخ فائدة المؤشرات مع امثلة لكي ترسخ في الذهن

وبارك الله فيكم

اللهم صلي علي المصطفي محمد

صلي الله عليه وسلم

#2
اقتباس
ولما يكتنفه من غموض ندعوا اصحاب الخبرة من المبرمجين الي توضيح الفائدة وليس المعني من المؤشرات

مؤشر يعني وصول للذاكرة أسرع .

لديك متغيرين الأول يحمل قيمة ما و الثاني سيحمل عنوان المتغير الأولى عند إستخدام البرنامج فإنه يلجأ إلى المتغير الثاني يقرأ العنوان في الذاكرة ثم يخرج قيمته .

الآن نفرض أنه لدينا متغير واحد يحمل قيمة ما عند إستدعاءها من طرف البرنامج فإنه أولا سيجلب العنوان في الذاكرة ثم يتعامل معها ،الفرق بين الأولى و الثانية هو الأولى أثناء الترجمة يتم تحديد العنوانين أما الثانية فإنه أثناء عمل البرنامج يتم تحديد العنواين والله أعلم إن كانت لدي أي معلومة خاطئة .

اقتباس
ولاهمية الامر ندعوا جميع الاخوة الي توضيخ فائدة المؤشرات مع امثلة لكي ترسخ في الذهن

سؤال طرح من قبل توجد الإجابة عليه في أرشيف القسم أي المواضيع المثبة هناك كتاب تقريبا يحتوي على 33 صفحة على ما أذكر .

''‏اللهم إني أسالك إيمانا دائما وأسألك قلبا خاشعا وأسألك علما ‏نافعا وأسألك يقينا صادقا وأسألك دينا قيما وأسألك العافية من كل ‏بلية''

'‏اللهم أغفر للمؤمنين و المؤمنات و المسلمين و المسلمات الأحياء ‏منهم و الأموات'

www.it-scoop.com

#3

السلام عليكم

المؤشرات او ال pointers في لغة ال C++ هي من اقوي ما يميز هذه اللغة و لكن سنجد في نفس الوقت انها من اخطر المميزات او الخصائص التي توفرها . لماذا ؟

اولا : دعونا نقوم بتعريف ما هو المؤشر ؟

هو متغير يحتوي علي عنوان متغير اخر .

للتوضيح اكثر ...

عندما نقوم بتعريف متغير ما و ليكن من النوع int

int a;

إذاً عند تنفيذ البرنامج سوف يحجز نظام التشغيل مقدار 2 أو 4 بايت لهذا المتغير في الذاكرة الرئيسية Main Memory مخصصة لوضع قيمة المتغير بها ز و لكن كيف سيصل البرنامج الي قيمة هذا المتغير عندما يحتاج الي ان يعرف قيمة هذا المتغير ؟

إذاً لا بد أن يكون لهذا المكان عنوان لا سيما إذا عرفنا ان الذاكرة الرئيسية مقسمة إلى عناوين.

إذاً المؤشر هو متغير يوجد بداخلة العنوان الذي يؤشر اليه .

ثانيا : كيف نقوم بتعريف المؤشر ؟

ببساطة نستطيع تعريف المؤشر بإضافة العلامة * قبل إسم المتغير.

بالشكل التالي:

type *variable;

حيث أن type من الممكن أن يكون أي نوع من أنواع البينات مثل:

int, char, float, double, ...

أو من الممكن حتى أن يكون Structure أو Class .

فمثلاً عندما نريد تعريف مؤشر من نوع int يكون كالتالي:

int *p;

و يفضل أن يكون إسم المؤشر محتوي على الحرف p أو ptr بحيث يدل على أنه مؤشر.

ثالثاً: العاملان * و & :

لقد بينا عمل العامل * و لكننا لم نتطرق إلى العامل & , العامل & يفيد إيجاد عنوان متغير, فلو كان عندنا متغير من نوع int مثلاً هكذا:

int a;

و أسندنا له القيمة 10 مثلاً:

a = 10;

و أردنا أن نعرف عنوان هذا المتغير و طبعاته سيكون الامر كالتالي:

printf("%d\n\n", &a);

في هذه الجملة سوف يطبع البرنامج عنوان المتغير a .

و لنتعرف على قاعدة مهمه جداً و هي أنه إذا عرفنا مؤشر px من نوع int هكذا:

int *px;

و اردنا أن نعرف عنوان المؤشر كيف ؟

نحن قلنا نعرف عنوان المتغير العادي بالعلامة & و بالتالي نفس الشيئ سيكون للمؤشرات و ستكتب هكذا:

&*px;

هذه الجملة تعطينا عنوان المؤشر px و لكن أليس هذا طويلاً ؟ و مقعد ؟

نعم هو كذلك و لغة السي وفرت علينا هذا الجهد بأن وضعت قاعدة تقول عنوان المؤشر سيعرف هكذا:

&px;

أي أن علامة & تلغي علامة *.

تم تعديل هذه المشاركة بواسطة البارودي في 12 يونيو 2008 في 13:38

#4

المؤشرات مالها وماعليها, نظرة تحليلية مفصلة...

المؤشرات pointers

معلومات عامة عن المؤشرات

الفرق الجوهرى بين pointer و reference

''‏اللهم إني أسالك إيمانا دائما وأسألك قلبا خاشعا وأسألك علما ‏نافعا وأسألك يقينا صادقا وأسألك دينا قيما وأسألك العافية من كل ‏بلية''

'‏اللهم أغفر للمؤمنين و المؤمنات و المسلمين و المسلمات الأحياء ‏منهم و الأموات'

www.it-scoop.com

#5
اقتباس
المؤشرات او ال pointers في لغة ال C++ هي من اقوي ما يميز هذه اللغة

المؤشرات موجوده في كل اللغات المحترمة .

وكما قال الاخ البارودي ما هي إلا متغير يحتوي علي عنوان متغير اخر , اذا لم تتعامل مع مصفوفات و structures كبيرة (او ما يحتاج استخدام مؤشرات اثناء التعامل معه مثلهم) عمليا وليس مجرد قراءة كتب فأظنك ستعيد نفس السؤال هذا بعد يومين ....

تم تعديل هذه المشاركة بواسطة GamingMasteR في 12 يونيو 2008 في 14:49

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#6

بارك الله فيكم ياخوتي الكرام

ويربي يجعله في ميزان حسناتكم ان شاء الله

وشكرا وشكرا

ومن خلال مافهمته من كلامكم والدروس الموجودة حول المؤشرات

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

ومن ثم محاولة الاستفادة منها في المواضيع المتقدمة من البرمجة

وكذالك محاولة كتابة برنامج واحد مثلا اولا بالطريقة العادية وثانيا بالمؤشرات وملا حضة الفروق

من ناحية السرعة اذا كنا نتكلم علي مشاريع عملاقة

او اي مزايا اخري

وكذالك مافهمته ان التجربة والممارسة هي افضل شيئ لفهم الامور الغامضة

وبارك الله فيكم

اللهم صلي علي المصطفي محمد

صلي الله عليه وسلم

#7

بالطبع هيك اخي الكريم

..,,.,.,.,.,.,.,.,.

إن شاء الله لما تتعمق وتتقدم بدراسة لغتنا ++C ستعرف تلك الفروق ومتى وأين ولماذا بديهياً اثناء رحلتك الدراسية

,.,.,.,.,.,.,.,.,.

تمنياتي لك وللجميع

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#8

متى نستخدم المؤشر؟

عندما تحتاج في برنامجك الى مصفوفة ولكن لا تعرف الى كم عنصر تحتاج . هنا لا مفر من المؤشر.

عندما تريد استخدام linked list هنا ستحتاج الى مؤشر.

tvquran_6.gif

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…