מה זה nullptr ב-C++

Mh Zh Nullptr B C



ב-C++, ערך מצביע ספציפי הנקרא a מצביע אפס משמש כדי לציין שמצביע אינו מתייחס למיקום זיכרון חוקי כלשהו. בתקן C++11 ואילך, הוא מיוצג על ידי מילת המפתח ' nullptr ' או לפי הערך הקבוע של 0.

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

דוגמה ל-nullptr ב-C++

#include
באמצעות מרחב שמות סטד ;
int רָאשִׁי ( )
{
nullptr_t pi1, pi2 ;
אם ( pi1 >= pi2 )
{
cout << 'המצביע 1 גדול מערך המצביע 2' << endl ;
}
אַחֵר
{
cout << 'המצביע 2 גדול מערך המצביע 1' << endl ;
}
לְהַשְׁחִיר * ch = pi1 ;
אם ( ch == nullptr )
cout << 'למשתנה ch pointer יש ערך null עם הפניה 0 של כתובת' << endl ;
אַחֵר
cout << 'המשתנה ch pointer אינו ערך null יש לו ערך כלשהו עם הפניה לכתובת' << endl ;
לַחֲזוֹר 0 ;
}

בקוד לעיל, אנו משתמשים בשניים nullptrs ולהשוות אותם אחד עם השני. לאחר מכן אנו משתמשים במצביע התווים כדי לאמת את nullptr .







תְפוּקָה



סיבות להשתמש ב-nullptr ב-C++

נקודות אפס משמשים לעתים קרובות בתכנות C++ מכמה סיבות:



1: אתחול מצביעים

כאשר משתנה מצביע מוכרז, יש לאתחל אותו תמיד עם מיקום זיכרון חוקי או א מצביע אפס . כאשר הגישה אל המצביע מאוחר יותר בקוד, הדבר עוזר למנוע התנהגות לא מוצהרת.





2: קוד שגיאה

הפונקציות עשויות לחזור נקודות אפס בתור קודי שגיאה כדי להראות שהם לא הצליחו להשלים את הפעולה שצוינה או להקצות זיכרון.

3: אימות תקפות המצביע

אימות תקפותו של המצביע לפני ההתייחסות שלו הוא תמיד רעיון חכם. זה מגביר את חוסנו של הקוד ומסייע במניעת כשלים בלתי צפויים בזמן ריצה.



4: פולימורפיזם

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

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

יתרונות השימוש ב-nullptr ב-C++

ישנם מספר יתרונות בשימוש ב-a nullptr .

1: בטיחות

כי nullptr בטוח יותר מ-NULL, יש להשתמש בו במקום. בעוד NULL מוגדר בפשטות כקבוע של מספר שלם עם הערך אפס, nullptr הוא מצביע מילולי שניתן להפוך רק לסוג מצביע ולא לשום סוג אחר.

2: שימושיות

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

3: הקצאת זיכרון דינמית

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

סיכום

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