אופרטור ביטול הפניה
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-C++ של Coddy. שיעור 3 מתוך 56.
עכשיו, כשאתה יכול לקבל מצביע למשתנה, עליך ללמוד איך לגשת לערך שבכתובת הזיכרון הזו ולשנות אותו. כאן אופרטור ביטול ההפניה (אפשר גם להשתמש באופרטור ביטול ההפניה כדי לשנות את המשתנה המקורי דרך המצביע. כשמקצים ערך חדש ל־הגישה העקיפה הזו היא שהופכת מצביעים לעוצמתיים כל כך — אפשר לקרוא ולשנות משתנים מכל מקום בתוכנית, כל עוד יש לך מצביע אליהם.
*) הופך לחיוני.אופרטור ביטול ההפניה * משמש לגישה לערך המאוחסן בכתובת הזיכרון שאליה מצביע מצביע. כשמציבים * לפני משתנה מצביע, הוא "עוקב" אחר הכתובת ומחזיר את הערך המאוחסן בה.זכור שאופרטור קבלת הכתובת (&) משמש לקבלת כתובת הזיכרון של משתנה, ואילו אופרטור ההפניה (*) משמש לגישה לערך שבכתובת זו.int number = 42;
int* ptr = &number; // ptr שומר את הכתובת של number
int value = *ptr; // value מכיל כעת 42*ptr, למעשה משנים את הערך המאוחסן במיקום הזיכרון הזה:*ptr = 100; // משנה את number ל-100
// הערך של number הוא עכשיו 100, אף ששינינו אותו דרך ptrאתגר
קלצרו תוכנית שמדגימה את אופרטור ביטול ההפניה על ידי שינוי הערך של משתנה באמצעות מצביע.
הקלט הבא יסופק:
- מספר שלם המייצג את הערך ההתחלתי של משתנה
- מספר שלם המייצג את הערך החדש שיוצב באמצעות המצביע
על התוכנית שלכם:
- להכריז על משתנה מספר שלם בשם
temperatureולאתחל אותו בערך הקלט הראשון - ליצור מצביע בשם
tempPtrשמצביע למשתנהtemperature - להדפיס את הערך המקורי באמצעות ביטול הפניה למצביע
- להשתמש באופרטור ביטול ההפניה כדי לשנות את הערך של
temperatureלערך הקלט השני באמצעות המצביע - להדפיס שוב את הערך החדש באמצעות ביטול הפניה למצביע
השתמשו בתבנית הפלט המדויקת הבאה:
Original value: [original value]
New value: [new value]נסו בעצמכם
#include <iostream>
using namespace std;
int main() {
// קראו את ערכי הקלט
int initialValue, newValue;
cin >> initialValue;
cin >> newValue;
// TODO: כתבו את הקוד שלכם להלן
// 1. הכריזו על המשתנה temperature ואתחלו אותו עם initialValue
// 2. צרו מצביע tempPtr המצביע על temperature
// 3. הדפיסו את הערך המקורי באמצעות גישה לערך שאליו מצביע המצביע
// 4. שנו את הערך של temperature דרך המצביע באמצעות newValue
// 5. הדפיסו את הערך החדש באמצעות גישה לערך שאליו מצביע המצביע
return 0;
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1מצביעים וזיכרון
מהו מצביע?אופרטור קבלת כתובתאופרטור ביטול הפניהמצביעי Nullמצביעים ומערכיםזיכרון דינמי באמצעות 'new'שחרור זיכרון באמצעות 'delete'סיכום — תרגול מצביעים2וקטורים (מערכים דינמיים)
היכרות עם std::vectorיצירת וקטורהוספת איבריםגישה לאיבריםגודל הווקטורמעבר על איברים באמצעות לולאת forלולאת for מבוססת טווחהסרת איבריםסיכום — פעולות על וקטורים5פרויקט: כלי לניהול מלאי
הגדרת הפרויקטהוספה ועדכון של פריטיםתרגלו בעצמכם: קומפיילר C++ אונליין