ملخص: المصفوفة الديناميكية
جزء من قسم المنطق وتدفق التنفيذ في رحلة C على Coddy. الدرس 37 من 63.
التحدي
سهلاكتب برنامجًا بلغة C ينشئ مصفوفة ديناميكية بناءً على إدخال المستخدم، ويعالج البيانات، ويوضح الإدارة السليمة للذاكرة. يجب أن يقوم برنامجك بما يلي:
- قراءة عدد صحيح
nمن المستخدم يمثّل عدد العناصر المراد تخزينها - استخدام
malloc()معsizeof()لتخصيص ذاكرة ديناميكيًا لمصفوفة تحتوي علىnمن الأعداد الصحيحة - التحقق مما إذا كان تخصيص الذاكرة قد نجح - وإذا فشل، اطبع
Memory allocation failed!وأنهِ البرنامج - إذا نجح التخصيص، اطبع
Array of size [n] created successfully! - قراءة
nقيمة صحيحة من المستخدم وتخزينها في المصفوفة المخصصة - حساب مجموع جميع العناصر وطباعته بالتنسيق:
Sum: [value] - إيجاد القيمة الصغرى وطباعتها بالتنسيق:
Minimum: [value] - حساب عدد العناصر الأكبر من المتوسط وطباعته بالتنسيق:
Elements above average: [count] - طباعة إجمالي الذاكرة المستخدمة بالبايت بالتنسيق:
Memory used: [bytes] bytes - استخدام
free()لتحرير الذاكرة - طباعة
Memory successfully freed!للتأكد من إتمام التنظيف على نحو سليم
تذكّر تضمين الترويسة <stdlib.h> لاستخدام malloc() وfree(). يختبر هذا التحدي فهمك الكامل لإدارة الذاكرة الديناميكية، بدءًا من التخصيص مرورًا بالاستخدام ووصولًا إلى التحرير السليم.
على سبيل المثال، إذا كان الإدخال:
5
12 8 15 3 20فيجب أن يكون الناتج:
Array of size 5 created successfully!
Sum: 58
Minimum: 3
Elements above average: 3
Memory used: 20 bytes
Memory successfully freed!يوضح هذا التحدي الشامل دورة حياة إدارة الذاكرة الديناميكية بأكملها، مع تنفيذ عمليات مفيدة لمعالجة البيانات على المصفوفة المخصصة.
جرّب بنفسك
#include <stdio.h>
#include <stdlib.h>
int main() {
// اقرأ عدد العناصر
int n;
scanf("%d", &n);
// TODO: اكتب شيفرتك أدناه
// 1. خصّص ذاكرة لـ n من الأعداد الصحيحة باستخدام malloc()
// 2. تحقّق من نجاح تخصيص الذاكرة
// 3. اقرأ n من الأعداد الصحيحة إلى المصفوفة
// 4. احسب المجموع، وأوجد القيمة الصغرى، وعدّ العناصر التي تتجاوز المتوسط
// 5. اطبع النتائج وحرّر الذاكرة
return 0;
}جميع دروس المنطق وتدفق التنفيذ
1أساسيات المؤشرات
ما هو المؤشر؟الإعلان عن المؤشراتعامل العنوان (&)عامل إلغاء المرجعية (*)مؤشرات NULLمراجعة: أساسيات المؤشرات4مشروع: أداة نصوص بسيطة
نظرة عامة على المشروععد الأحرف2المؤشرات والمصفوفات
أسماء المصفوفات كمؤشراتعناصر المصفوفة - المؤشراتالعمليات الحسابية على المؤشراتمقارنة المؤشراتمراجعة: التنقل في المصفوفة باستخدام المؤشرات5المؤشرات والدوال
التمرير بالقيمةتمرير المؤشرات إلى الدوالتعديل المتغيرات عبر المؤشراتمثال كلاسيكي: التبديلتمرير المصفوفات إلى الدوالملخص: وسائط المؤشرات في الدوال8الهياكل والمؤشرات
المؤشرات إلى الهياكلعامل السهم (->)تمرير الهياكل بالقيمةتمرير مؤشرات الهياكلالتخصيص الديناميكي للهياكلمراجعة: تعديل الهياكل باستخدام المؤشرات11تحديات المراجعة النهائية
مراجعة: دمج السلاسل النصية الديناميكيمراجعة: مصفوفة من الـ Structsمراجعة: عداد تكرار الكلمات3مصفوفات الأحرف والسلاسل النصية
السلاسل النصية كمصفوفات charالمُنهي الصفري (Null Terminator)إدخال السلاسل النصية باستخدام scanfاستخدام strlen()استخدام strcpy()استخدام strcat()استخدام strcmp()مراجعة: دوال السلاسل النصية الأساسية6إدارة الذاكرة
ذاكرة Stack مقابل Heapالتخصيص الديناميكي - malloc()استخدام sizeof() للتخصيصالتحقق من فشل التخصيصتحرير الذاكرة باستخدام free()التخصيص باستخدام calloc()ملخص: المصفوفة الديناميكيةتدرّب بنفسك: مترجم C عبر الإنترنت