Menu
Coddy logo textTech

אופרטור ביטול ההפניה (*)

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

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

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

int age = 25;
int *ptr = &age;
printf("%d", *ptr);    // מדפיס 25 - הערך של age

חשוב להבין שלכוכבית (*) יש שתי משמעויות שונות ב-C. כשמצהירים על מצביע כמו int *ptr;, הכוכבית מציינת ש-ptr הוא מצביע. כשמשתמשים בה עם מצביע קיים כמו *ptr, היא מבצעת דרישה של המצביע כדי לגשת לערך שאליו הוא מצביע.

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

challenge icon

אתגר

קל

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

  1. להכריז על משתנה שלם בשם value ולאתחל אותו לערך 75
  2. להכריז על משתנה מסוג float בשם price ולאתחל אותו לערך 19.99
  3. להכריז על מצביע למספר שלם בשם value_ptr
  4. להכריז על מצביע למספר מסוג float בשם price_ptr
  5. להשתמש באופרטור לקיחת הכתובת כדי לשייך את הכתובת של value אל value_ptr
  6. להשתמש באופרטור לקיחת הכתובת כדי לשייך את הכתובת של price אל price_ptr
  7. להשתמש באופרטור ביטול ההפניה כדי להדפיס את הערך של value דרך value_ptr
  8. להשתמש באופרטור ביטול ההפניה כדי להדפיס את הערך של price דרך price_ptr עם 2 ספרות אחרי הנקודה העשרונית בדיוק

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

Value through pointer: 75
Price through pointer: 19.99

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

נסו בעצמכם

#include <stdio.h>

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

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

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

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