الاثنين، 24 فبراير 2020

المصفوفة هي مساحة من الذاكرة تحجز سكشككشلاءمز\ْلإنشاء مصفوفة فيها الحرف الأول من كل يوم من أيام الأسبوع فستكون
char week[7] = "SMTWTFS"
وستكون الخانة
week[0] = 'S'
بمعنى أنه تم حجز مساحة من الذاكرة مكونة في هذه الحالة من 7 مواقع تخزين، وتم وضع حرف من الحروف السبعة في كل موقع، وفي الموقع رقم صفر (خانة البداية) على سبيل المثال ، سنجد الحرف 'S'.

مفاهيم عامة عن الذاكرة, طبيعة المصفوفات في الذاكرة, مقدمة عن المؤشرات.[edit]

.
.
.

مقدمة عن المؤشرات[edit]

المؤشرات أو pointers هي نوع من المتغيرات يستخدم للإشارة إلى موقع ما في الذاكرة عن طريق حفظ موقعه. إذا فالمؤشرات تحمل قيمة يعتمد حجمها على تصميم الحاسوب وحجم الذاكرة التي يدعمها ، فتكون في العادة 2 أو 4 بايت. وتستخدم المؤشرات للإشارة إلى قيم متغيرات أخرى في العادة أو للتحرك الحرية في ذاكرة البرنامج، ومن الجدير بالذكر أن النظام لا يمنعك من الإعلان عن مؤشر يشير إلى موقع خارج برنامجك، ولكن بمجرد محاولة إستخدامه للقراءة أو الكتابة، فإن النظام يرجع خطأ يؤدي إلى إنهاء البرنامج، وهو ما يعرف بأخطاء Segmentation error. ولهذا السبب يكره البعض إستخدامها وذلك لسهولة الوقوع في الخطأ أثناء إستخدامها، ولكن عدم إستخدامها قد يمنعك من القيام بالكثير من الأشياء المثيرة اثناء البرمجة بلغة C++.
وكون المؤشرات تشير إلى موقع في الذاكرة ، فذلك يعني أن جميع المؤشرات بغض النظر عن نوعها (ولكن بالطبع على ذات التصميم من الحواسيب) لها ذات الحجم، فلماذا إذا هناك أنواع مختلفة من المؤشرات؟
إن تغير نوع المؤشر يساعد في التحرك في الذاكرة بخطوات تتناسب مع نوع المتغير الذي تشير إليه هذه المؤشرات، بكلمات أخرى ، إذا كنت تشير بمؤشر مخصص للإشارة إلى char، فإن كل خطوة تحركها بإستخدام عملية الزيادة ++ مثلا تغير من موقع إشارة المؤشر ببايت واحد فقط، وذلك لأن الحروف من نوع char تحتل بايتا واحدا كل مرة، في حين أنك لو استخدمت مؤشرا مخصص للإشارة إلى عدد صحيح int بحجم 4 بايت، فإن كل خطوة زيادة للمؤشر بعملية ++ ستحركه اربعة بايت.

الإعلان عن المؤشرات[edit]

للإعلان عن المؤشرات ، كل ما عليك القيام به هو تحديد نوع المتغير الذي سيشير إليه المؤشر واسم ذلك المؤشر فمثلا:
char *aPointer;
int x=5, *xptr;
هو جزء من برنامج، السطر الأول فيه يعلن عن مؤشر مخصص للإشارة عن متغير من نوع حروف char ، أما السطر الثاني ففيه إعلان عن متغير من نوع عدد صحيح int وبعدها مؤشر مخصص للإشارة على متغير من نوع int.
لاحظ من المثال أنه لتحديد ان الإعلان عن مؤشر من نوع ما ، ما عليك سوى الإعلان عنه كأي متغير من النوع الذي سيتم الإشارة إليه ثم إضافة النجمة * قبل اسم المؤشر. لاحظ ان المؤشران المعلن عنهما أعلاه لم يتم تحديد قيمهما للإشارة إلى أي متغير، ولكن هذا لا يعني أنهما لا يحملان قيمة، فهما يحملان قيمة مجهولة بالنسبة لنا، وعلى الأغلب ، فإن إستخدامهما مباشرة بعد الإعلان عنهما بهذه الصورة سيؤدي إلى Segmentation fault، أي خطأ في الإشارة إلى موقع الذاكرة لأنهما وعلى الأغلب سيكونان حاملان لقيم تشير وبشكل عشوائي لمواقع ما في الذاكرة على الأغلب خارج نطاق برنامجنا.

ليست هناك تعليقات:

إرسال تعليق

 سمعت مقولة بتقول لو عاوز تستثمر واستثمارك يتنجح استمثر في المكياج او في المطاعم فالناس مش هتبطل تاكل ولا الستات هيبطلوا يحطوا مكياج 😂 ففي ...