Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

المصفوفات والدوال

جزء من قسم Fundamentals في رحلة C++ على Coddy — الدرس 62 من 74.

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

على سبيل المثال:

int numbers[5] = {1, 2, 3, 4, 5};
void processArray(int arr[]) {
	int size = std::size(arr);
}

std::size(arr) لن يعطيك حجم المصفوفة الفعلي. arr هو في الواقع مؤشر هنا، وليس مصفوفة. سيتم تعلم المؤشرات في الدورة القادمة.

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

void processArray(int arr[], int size) {
    // الآن يمكننا العمل بأمان مع المصفوفة باستخدام معلمة الحجم
}

إليك كيفية استدعاء الدالة:

int numbers[5] = {1, 2, 3, 4, 5};
processArray(numbers, 5);

أيضاً، لا يمكن إرجاع مصفوفة في دالة:

int[] processArray(int arr[]) {
	return arr;
}

هذا غير صحيح. بدلاً من ذلك، يجب عليك استخدام صيغة *:

int* processArray(int arr[]) {
	return arr;
}
int* newArr = processArray(arr);

تشير صيغة النجمة (*) إلى المؤشرات التي سيتم مناقشتها في الدورة القادمة.

ورقة مرجعية

لا يمكن تمرير المصفوفات مباشرة إلى الدوال - فهي "تتحلل" (decay) إلى مؤشرات لعنصرها الأول.

عند تمرير المصفوفات إلى الدوال، تحتاج إلى تمرير الحجم كمعامل منفصل:

void processArray(int arr[], int size) {
    // العمل مع المصفوفة باستخدام معامل الحجم
}

int numbers[5] = {1, 2, 3, 4, 5};
processArray(numbers, 5);

لا يمكن إرجاع المصفوفات مباشرة من الدوال. استخدم صيغة المؤشر بدلاً من ذلك:

int* processArray(int arr[]) {
    return arr;
}
int* newArr = processArray(arr);

جرّب بنفسك

لا يتضمّن هذا الدرس تحدّيًا برمجيًا.

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Fundamentals