אופרטור ביטול ההפניה (*)
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-C של Coddy. שיעור 4 מתוך 63.
עכשיו, כשאתה יודע איך לאחסן כתובות במצביעים, עליך ללמוד איך לגשת לערך עצמו המאוחסן בכתובת הזיכרון הזו. אופרטור ההפניה (*) מאפשר לך "לעקוב" אחר המצביע כדי לקבל את הערך שאליו הוא מצביע.
כשמציבים את האופרטור * לפני משתנה מצביע, הוא ניגש לערך המאוחסן בכתובת הזיכרון שהמצביע מחזיק. אפשר לחשוב על זה כאילו אומרים: "תן לי את מה שנמצא בתוך החדר בכתובת הזאת."
int age = 25;
int *ptr = &age;
printf("%d", *ptr); // מדפיס 25 - הערך של ageחשוב להבין שלכוכבית (*) יש שתי משמעויות שונות ב-C. כשמצהירים על מצביע כמו int *ptr;, הכוכבית מציינת ש-ptr הוא מצביע. כשמשתמשים בה עם מצביע קיים כמו *ptr, היא מבצעת דרישה של המצביע כדי לגשת לערך שאליו הוא מצביע.
אופרטור ביטול ההפניה חיוני משום שהוא משלים את מחזור המצביע: אפשר לאחסן כתובת במצביע באמצעות &, ואז לאחזר את הערך שבכתובת הזו באמצעות *. כך אפשר לגשת למשתנים ולשנות אותם בעקיפין דרך כתובות הזיכרון שלהם.
אתגר
קלכתוב תוכנית C שמדגימה את תהליך העבודה המלא עם מצביעים: הכרזה, שיוך כתובת וביטול הפניה. התוכנית שלך צריכה:
- להכריז על משתנה שלם בשם
valueולאתחל אותו לערך 75 - להכריז על משתנה מסוג float בשם
priceולאתחל אותו לערך 19.99 - להכריז על מצביע למספר שלם בשם
value_ptr - להכריז על מצביע למספר מסוג float בשם
price_ptr - להשתמש באופרטור לקיחת הכתובת כדי לשייך את הכתובת של
valueאלvalue_ptr - להשתמש באופרטור לקיחת הכתובת כדי לשייך את הכתובת של
priceאלprice_ptr - להשתמש באופרטור ביטול ההפניה כדי להדפיס את הערך של
valueדרךvalue_ptr - להשתמש באופרטור ביטול ההפניה כדי להדפיס את הערך של
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;
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1יסודות המצביעים
מהו מצביע?הכרזה על מצביעיםאופרטור לקיחת הכתובת (&)אופרטור ביטול ההפניה (*)מצביעי NULLסיכום: יסודות המצביעים2מצביעים ומערכים
שמות מערכים כמצביעיםאיברי מערך ומצביעיםאריתמטיקה של מצביעיםהשוואת מצביעיםסיכום: מעבר על מערך באמצעות מצביעים5מצביעים ופונקציות
העברה לפי ערךהעברת מצביעים לפונקציותשינוי משתנים באמצעות מצביעיםדוגמה קלאסית: החלפההעברת מערכים לפונקציותחזרה: ארגומנטים של מצביעי פונקציה3מערכי תווים ומחרוזות
מחרוזות כמערכי charתו הסיום nullקלט מחרוזת באמצעות scanfשימוש ב־strlen()שימוש ב־strcpy()שימוש ב־strcat()שימוש ב־strcmp()סיכום: פונקציות מחרוזת בסיסיותתרגלו בעצמכם: קומפיילר C אונליין