C++/מצביעים והמשתנה הפניה: הבדלים בין גרסאות בדף

תוכן שנמחק תוכן שנוסף
Daniz28 (שיחה | תרומות)
שורה 3:
מצביע הוא משתנה המכיל כתובת זיכרון. בעזרת מצביעים ניתן לגשת לכתובות בזיכרון, לקרוא מהן, ולכתוב אליהן. בעזרת המשתנים ניתן לחסוך בזיכרון ולהעביר כתובות של עצמים במקום ליצור אותם שוב ושוב. כמו כן, המצביעים נותנים לנו אפשרויות לניהול זיכרון גמישות יותר.
<source lang="c++">
int *num = reinterpret_cast<int *>(7);
</source>
גם המרה בסגנון הישן תעבוד:
במקרה הנ"ל, אנו מגדירים מצביע מסוג int (כלומר, הוא מצביע לשטח בזיכרון בגודל של int). מצביע זה מצביע על הכתובת 7 בזיכרון.
<source lang="c++">
int *num = (int *)7;
</source>
במקרהבשני המקרים הנ"ל, אנו מגדירים מצביע מסוג int (כלומר, הוא מצביע לשטח בזיכרון בגודל של int). מצביע זה מצביע על הכתובת 7 בזיכרון.
 
אמנם בשפת C אפשר להציב ערך שלם ישירות לתוך מצביע, אך ב-++C נדרשת המרה מפורשת על מנת לאפשר הצבה כזו. יוצא מן הכלל הוא הצבת מספר 0 - עבור תאימות לאחור עם מצביע "אפס" הישן - NULL. NULL משמש לאיפוס מצביעים ומוגדר בפועל כמספר שלם 0. לפי התקן המעודכן של ++C משתמשים במילה שמורה nullptr לאיפוס מצביעים:
<source lang="c++">
int *num = 0; // הגדרת מצביע למספר שלם עם הצבה מפורשת של 0
int *num = NULL; // הגדרת מצביע למספר שלם עם הצבת מצביע "אפס" בסגנון הישן
int *num = nullptr; // C++ הגדרת מצביע למספר שלם עם הצבת מצביע "אפס" לפי התקן המעודכן של
</source>
 
להלן דוגמה להגדרת מצביע המצביע לכתובת של משתנה אחר:<syntaxhighlight lang="c++">
char c = 'A';