Menu
Coddy logo textTech

העברת מצביעים לפונקציות

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-C של Coddy. שיעור 26 מתוך 63.

עכשיו, כשאתם מבינים את המגבלות של העברה לפי ערך, בואו נבחן כיצד העברת מצביעים לפונקציות פותרת את הבעיה הזאת. במקום להעביר עותק של ערך משתנה, תוכלו להעביר לפונקציה את כתובת הזיכרון של המשתנה.

כשמעבירים מצביע לפונקציה, הפונקציה מקבלת גישה למיקום של המשתנה המקורי בזיכרון. פירוש הדבר שהפונקציה יכולה לעבוד ישירות עם הנתונים המקוריים, ולא רק עם עותק שלהם.

void processValue(int *ptr) {
    // ptr מחזיק את הכתובת של המשתנה המקורי
    // הפונקציה יכולה כעת לגשת למיקום זה בזיכרון
}

int main() {
    int x = 10;
    processValue(&x);  // העבר את הכתובת של x
    return 0;
}

שימו לב כיצד אנו משתמשים באופרטור כתובת־של & בעת קריאה לפונקציה כדי להעביר את הכתובת של המשתנה. פרמטר הפונקציה מוכרז כ־int *ptr, ומציין שהיא מצפה לקבל מצביע למספר שלם. הטכניקה הבסיסית הזו פותחת אפשרויות רבות עוצמה עבור פונקציות לקיים אינטראקציה עם נתוני התוכנית שלכם.

challenge icon

אתגר

קל

כתוב תוכנית C שמדגימה העברת מצביעים לפונקציות. התוכנית שלך צריכה:

  1. ליצור פונקציה בשם displayValue שמקבלת מצביע למספר שלם כפרמטר
  2. בתוך הפונקציה displayValue, להשתמש באופרטור dereference כדי לגשת לערך שבכתובת הזיכרון ולהדפיס אותו בתבנית: Value at address: [value]
  3. בפונקציה main, להכריז על משתנה של מספר שלם בשם number ולאתחל אותו בערך 42
  4. להדפיס את הערך המקורי בתבנית: Original value: [value]
  5. לקרוא לפונקציה displayValue ולהעביר את הכתובת של המשתנה number באמצעות אופרטור קבלת הכתובת
  6. לאחר קריאת הפונקציה, להדפיס הודעת אישור: Function call completed

הפלט שלך צריך להדגים שהפונקציה מקבלת בהצלחה את כתובת הזיכרון של המשתנה המקורי וניגשת אליה:

Original value: 42
Value at address: 42
Function call completed

האתגר הזה מציג את הרעיון הבסיסי של העברת מצביעים לפונקציות, וכך מאפשר לפונקציה לגשת למיקום הזיכרון של המשתנה המקורי במקום לעבוד עם עותק של ערכו.

נסו בעצמכם

#include <stdio.h>

// TODO: כתבו כאן את הפונקציה displayValue

int main() {
    // TODO: כתבו כאן את הקוד שלכם
    // 1. הכריזו על המשתנה number ואתחלו אותו
    // 2. הדפיסו את הערך המקורי
    // 3. קראו לפונקציה displayValue
    // 4. הדפיסו את הודעת הסיום
    
    return 0;
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה לוגיקה וזרימת תוכנית

תרגלו בעצמכם: קומפיילר C אונליין