מצביעי const
שיעור 5 מתוך 14 בקורס מצביעים ב-C++ של Coddy.
מצביע קבוע הוא מצביע שהערך שלו (כתובת הזיכרון שאליה הוא מצביע) אינו ניתן לשינוי לאחר האתחול. עם זאת, ניתן לשנות את הערך במיקום הזיכרון שאליו הוא מצביע. כשמדברים על מצביעים קבועים, יש שני סוגים עיקריים של מצביעים
- מצביע לקבוע - מצביע לערך קבוע
- מצביע קבוע - מצביע באופן קבוע לערך
אז מה ההבדל
1. מצביע לקבוע
סוג זה של מצביע מצביע לערך קבוע. לא ניתן לשנות את הערך באמצעות המצביע. כלומר, זהו מצביע רגיל שרק מצביע לערך קבוע, ועם המצביע הזה ניתן לשנות את הכתובת שאליה הוא מצביע.
int a = 5, b = 10;
// מצביע ל-int קבוע
int const * ptr = &a;
// זה מותר:
ptr = &b; // שינוי הכתובת
// זה אסור:
*ptr = 10; // ניסיון לשנות ערך קבוע2. מצביע קבוע
מצביע קבוע מצביע לערך שאינו קבוע, אך לא ניתן לשנות את המצביע עצמו כך שיצביע לכתובת אחרת; כתובת ההצבעה שלו קבועה
int a = 5, b = 10;
// מצביע קבוע ל-int
int * const ptr = &a;
// זה מותר:
*ptr = 10; // שינוי ערך שאינו const
// זה אסור:
ptr = &b; // ניסיון לשנות כתובת קבועהכפי שאפשר לראות, מילת המפתח const מופיעה לפני ה-* עבור מצביע לערך קבוע, ואחרי ה-* עבור מצביע קבוע לערך שאינו קבוע. אפשר גם לשלב ביניהם וליצור מצביע קבוע לערך קבוע; עושים זאת באמצעות שתי מילות מפתח const, לפני הכוכבית ואחריה, אך לעיתים רחוקות נזדקק לכך
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
אתגר
קלקרא שני מספרים מהקלט, צור מצביע קבוע constPtr ומצביע לקבוע ptrConst, אתחל את constPtr כך שיצביע על המספר הראשון ולאחר מכן שנה את ערכו למספר השני, וקבע את הכתובת של ptrConst כך שתצביע על המספר השני
נסו בעצמכם
#include <iostream>
using namespace std;
int main() {
// הכניסו כאן את הקוד
// אין לשנות את הקוד שלהלן
cout << "a = " << a << endl;
cout << "b = " << b << endl;
if(&a == constPtr)
cout << "&a == constPtr" << endl;
if(&b == ptrConst)
cout << "&b == ptrConst" << endl;
return 0;
}כל השיעורים ביחידה מצביעים ב-C++
1יסודות המצביעים
מבוא למצביעיםהצהרה ואתחולחשבון אריתמטי - השמהחשבון אריתמטי - פעולותמצביעי constמצביעים ומערכיםתרגלו בעצמכם: קומפיילר C++ אונליין