סיכום: מעבר על מערך באמצעות מצביעים
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-C של Coddy. שיעור 11 מתוך 63.
אתגר
קלכתבו תוכנית C שמממשת פונקציה לחישוב סכום כל האיברים במערך של מספרים שלמים באמצעות חשבון מצביעים ושקילות בין מערך למצביע. על התוכנית שלכם:
- ליצור פונקציה בשם
calculateSumשמקבלת שני פרמטרים:- מצביע למספר שלם (
int *arr) שמייצג את המערך - מספר שלם (
size) שמייצג את מספר האיברים במערך
- מצביע למספר שלם (
- בתוך הפונקציה
calculateSum:- לאתחל משתנה
sumל-0 - ליצור משתנה מצביע
ptrולהגדיר אותו כך שיצביע לתחילת המערך - להשתמש בלולאה כדי לעבור על המערך באמצעות חשבון מצביעים
- בכל איטרציה, להוסיף את הערך שעליו מצביע
ptrאלsum - להגדיל את המצביע כדי לעבור לאיבר הבא
- להחזיר את הסכום שחושב
- לאתחל משתנה
- בפונקציה
main:- לקרוא מספר שלם
nשמייצג את גודל המערך - להצהיר על מערך של מספרים שלמים בגודל
n - לקרוא
nמספרים שלמים מהקלט כדי למלא את המערך - לקרוא לפונקציה
calculateSumעם המערך והגודל שלו - להדפיס את התוצאה בפורמט: "Sum: [value]"
- לקרוא מספר שלם
הפונקציה חייבת להשתמש בחשבון מצביעים כדי לעבור על המערך — אין להשתמש בסימון אינדוקס של מערך כמו arr[i]. במקום זאת, יש להשתמש בביטול הפניה של מצביע ובפעולות הגדלה כדי לגשת לאיברי המערך.
לדוגמה, אם הקלט הוא:
5
10 20 30 40 50הפלט שלכם צריך להיות:
Sum: 150האתגר הזה בודק את ההבנה שלכם לגבי האופן שבו פונקציות יכולות לקבל מערכים כפרמטרים מסוג מצביע, כיצד להשתמש בחשבון מצביעים כדי לעבור על מערכים ביעילות, וכיצד שמות מערכים מומרים אוטומטית למצביעים כשמעבירים אותם לפונקציות.
נסו בעצמכם
#include <stdio.h>
// TODO: כתבו כאן את הפונקציה calculateSum
int main() {
int n;
scanf("%d", &n);
int arr[n];
// קראו את איברי המערך
for(int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
// TODO: קראו לפונקציה calculateSum ושמרו את התוצאה
// TODO: הדפיסו את התוצאה בפורמט "Sum: [value]"
return 0;
}כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1יסודות המצביעים
מהו מצביע?הכרזה על מצביעיםאופרטור לקיחת הכתובת (&)אופרטור ביטול ההפניה (*)מצביעי NULLסיכום: יסודות המצביעים2מצביעים ומערכים
שמות מערכים כמצביעיםאיברי מערך ומצביעיםאריתמטיקה של מצביעיםהשוואת מצביעיםסיכום: מעבר על מערך באמצעות מצביעים5מצביעים ופונקציות
העברה לפי ערךהעברת מצביעים לפונקציותשינוי משתנים באמצעות מצביעיםדוגמה קלאסית: החלפההעברת מערכים לפונקציותחזרה: ארגומנטים של מצביעי פונקציה3מערכי תווים ומחרוזות
מחרוזות כמערכי charתו הסיום nullקלט מחרוזת באמצעות scanfשימוש ב־strlen()שימוש ב־strcpy()שימוש ב־strcat()שימוש ב־strcmp()סיכום: פונקציות מחרוזת בסיסיותתרגלו בעצמכם: קומפיילר C אונליין