מערך כפרמטר
שיעור 9 מתוך 17 בקורס פונקציות ב-C של Coddy.
פונקציה יכולה לקבל גם מערך כפרמטר, בדיוק כמו כל משתנה אחר. ההבדל היחיד הוא שמערך מועבר לפונקציה כמצביע, בניגוד לסוגים פרימיטיביים אחרים שאנו מעבירים לפי ערך.
כאשר מעבירים מערך לפונקציה, הפונקציה מקבלת מצביע לאיבר הראשון במערך.
ניקח דוגמה לאופן השימוש בו:
#include <stdio.h>
// הגדרת פונקציה
void printArray(char *arr[]) {
for (int i = 0; i <= 3; i++) {
printf("%s ", arr[i]);
}
printf("\n");
}
int main() {
char *a[] = {"C", "Java", "React", "Python"};
// קריאה לפונקציה
printArray(a);
return 0;
}
בפונקציה main, נגדיר מערך פשוט:
char *a[] = {"C", "Java", "React", "Python"};בפונקציה printArray, נעבור בלולאה מ־0 עד 3 ונדפיס כל ערך:
for (int i = 0; i <= 3; i++) {
printf("%s ", arr[i]);
}הפלט ייראה כך:
C Java React Python הערה: כשעובדים עם מחרוזות, צריך להשתמש במפורש בכוכבית (
*) כדי לומר למהדר שכל מחרוזת (למשל, "Java") היא איבר במערך. אחרת, הוא יתייחס לכל תו (למשל, 'J') כאיבר.
אתגר
קלכתבו פונקציה בשם printDouble שתקבל מערך של מספרים, תכפיל כל איבר ותדפיס את הרשימה שהתקבלה למסך.
לדוגמה, עבור הקלט:
2 6 8 10הפלט יהיה:
4 12 16 20נסו בעצמכם
#include <stdio.h>
// הגדרת פונקציה
int main()
{
// אל תשנו את זה
int nums[] = {10, 6, 22, 40, 1}};
// קראו לפונקציה
printDouble(nums);
return 0;
}כל השיעורים ביחידה פונקציות ב-C
תרגלו בעצמכם: קומפיילר C אונליין