++C למתחילים
 
דף הבית>>פרק 6

פרק 6

מחוונים - pointers :

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

האופרטורים * ו &:

במצבעים נפגוש שני סימונים חדשים:האופרטורים * ו &.

האופרטור * (כוכבית) פירושו "הערך המוצבע על ידי". כלומר אם נכתוב  

;int *p  

אזי הכרזנו כי המשתנה p הוא משתנה מחוון המיועד להצביע על משתנים מסוג int. האופרטור * אומר בעצם ש - p הוא מחוון ויכיל כתובת של משתנה מסוג int ולא תוכן של מספר בעצמו. בדוגמה זו p לא אותחל ולכן הוא יכיל כתובת שרירותית.

האופרטור &   פירושו "כתובתו של".במילים אחרות - אנו מתייחסים לכתובת בה נמצא המשתנה בזיכרון ולא לתוכנו. כלומר אם נכתוב  

;p = &x  

פקודה זו מבצעת השמה של הכתובת של x ל p.  

קדימות האופרטור * :

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

הקודם הבא