Menu
Coddy logo textTech

העברה לפי ערך

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

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

כך זה עובד: אם יש לך משתנה x שערכו 10 ואתה מעביר אותו לפונקציה, הפונקציה מקבלת עותק נפרד משלה של הערך הזה. כל שינוי שהפונקציה מבצעת בעותק הזה אינו משפיע על המשתנה המקורי בפונקציה שקראה לה.

void tryToChange(int num) {
    num = 99;  // זה משנה רק את העותק
}

int main() {
    int x = 10;
    tryToChange(x);
    // x עדיין שווה ל-10, לא ל-99
    return 0;
}

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

challenge icon

אתגר

קל

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

התוכנית שלך צריכה:

  1. ליצור פונקציה בשם tryToModify שמקבלת פרמטר של מספר שלם בשם number
  2. בתוך הפונקציה tryToModify, להוסיף 50 לפרמטר number
  3. בתוך הפונקציה tryToModify, להדפיס את הערך ששונה בפורמט: Inside function: [value]
  4. בפונקציה main, להכריז על משתנה מספר שלם בשם original ולאתחל אותו לערך 25
  5. להדפיס את הערך המקורי לפני קריאה לפונקציה, בפורמט: Before function call: [value]
  6. לקרוא לפונקציה tryToModify ולהעביר את המשתנה original כארגומנט
  7. לאחר הקריאה לפונקציה, להדפיס שוב את הערך של original בפורמט: After function call: [value]

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

Before function call: 25
Inside function: 75
After function call: 25

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

נסו בעצמכם

#include <stdio.h>

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

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

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

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

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