שיעור 18: מצביעים — כתובות, & ו-*
כל משתנה בתוכנית שלך גר בכתובת אמיתית בזיכרון — בדיוק כמו דירה ברחוב. האופרטור &x נותן את הכתובת של x (סוף סוף מתבררת התעלומה של scanf("%d", &x) משיעור 3!). מצביע הוא משתנה ששומר כתובת: int *p = &x;. עם *p ניגשים לערך שנמצא בכתובת — אפשר לקרוא אותו וגם לשנות אותו, כך ש-*p = 99; משנה את x ע
מצביע הוא פתק עם כתובת של דירה. &x כותב את הכתובת על הפתק, ו-*p אומר 'לך לכתובת שעל הפתק ותסתכל (או תשנה) מה שבפנים'. לשנות דרך הפתק זה לשנות את הדירה האמיתית.
- כתובת זיכרון
- המיקום המספרי שבו משתנה גר בזיכרון. כל משתנה מקבל כתובת.
- & (אופרטור הכתובת)
- &x מחזיר את הכתובת של x — לא את הערך שלו.
- מצביע
- משתנה ששומר כתובת של משתנה אחר. מצהירים: int *p = &x;.
- * (דה-רפרנס)
- *p ניגש לערך שבכתובת ש-p מחזיק. קריאה וגם כתיבה: *p = 99; משנה את x.
- NULL
- ערך מיוחד שאומר 'המצביע לא מצביע על כלום'. תמיד לבדוק לפני שימוש.