כיצד לבדוק Null ב- C: 7 שלבים (עם תמונות)

תוכן עניינים:

כיצד לבדוק Null ב- C: 7 שלבים (עם תמונות)
כיצד לבדוק Null ב- C: 7 שלבים (עם תמונות)

וִידֵאוֹ: כיצד לבדוק Null ב- C: 7 שלבים (עם תמונות)

וִידֵאוֹ: כיצד לבדוק Null ב- C: 7 שלבים (עם תמונות)
וִידֵאוֹ: זוגות שלא תאמינו שקיימים | טופטן 2024, מאי
Anonim

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

צעדים

חלק 1 מתוך 2: ביצוע בדיקת אפס

בדוק את Null ב- C שלב 1
בדוק את Null ב- C שלב 1

שלב 1. השתמש בקוד בדיקת האפס הסטנדרטי

להלן הדרך הברורה ביותר לכתוב צ'ק בטל. נשתמש ptr במאמר זה כשם המצביע שאתה בודק.

  • אם (ptr == NULL)

    {

    // קוד אם המצביע הוא NULL

    } אחר {

    // קוד אם לא NULL

    }

בדוק את Null ב- C שלב 2
בדוק את Null ב- C שלב 2

שלב 2. בדוק כל ערך מלבד NULL

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

  • אם (ptr! = NULL) {

    // קוד אם לא NULL

    }

בדוק את Null ב- C שלב 3
בדוק את Null ב- C שלב 3

שלב 3. כתוב תחילה את ה- NULL כדי להימנע משגיאות (אופציונלי)

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

זה נראה קצת מביך עבור כמה מתכנתים, אבל זה תקף לחלוטין. איזו גישה אתה משתמש תלויה רק בהעדפה אישית, ועד כמה המהדר שלך מצליח לזהות את השגיאה if (ptr = NULL)

בדוק את Null ב- C שלב 4
בדוק את Null ב- C שלב 4

שלב 4. בדוק אם המשתנה נכון

פשוט אם (ptr) בודק אם ptr הוא TRUE. הוא יחזיר FALSE אם ptr הוא NULL, או אם ptr הוא 0. ההבחנה לא חשובה במקרים רבים, אך שים לב כי אלה אינם זהים בכל הארכיטקטורות.

ההיפך מזה הוא אם (! ptr), שיחזיר TRUE אם ptr הוא FALSE.

חלק 2 מתוך 2: הימנעות מטעויות

בדוק את Null ב- C שלב 5
בדוק את Null ב- C שלב 5

שלב 1. הגדר מצביע לפני בדיקת NULL

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

  • הימנע מטעות זו:

    char *ptr;

    אם (ptr == NULL)

    {

    // פעולה זו תחזיר FALSE. הצביע קיבל ערך חוקי.

    }

  • במקום זאת כתוב:

    char *ptr = NULL; // זה מקצה את המצביע ל- NULL

    אם (ptr == NULL)

    {

    // פעולה זו תחזיר TRUE אם המצביע לא הוקצה מחדש.

    }

בדוק את Null ב- C שלב 6
בדוק את Null ב- C שלב 6

שלב 2. שימו לב לפונקציות שיכולות להחזיר NULL

אם פונקציה יכולה להחזיר NULL, חשוב אם זו אפשרות והאם זה יגרום לבעיות בהמשך הקוד שלך. להלן דוגמא לפונקציית malloc באמצעות בדיקת null (אם (ptr)) כדי להבטיח שהוא מטפל רק במצביעים עם ערכים תקפים:

  • int * ptr = malloc (N * sizeof (int));

    אם (ptr) {

    int i;

    עבור (i = 0; i <N; ++ i)

    ptr = i;

    }

בדוק את Null ב- C שלב 7
בדוק את Null ב- C שלב 7

שלב 3. הבין ש- NULL הוא 0 אך עליך תמיד להשתמש ב- NULL במקום ב- 0 כאשר אתה עובד עם מצביעים לשם הבהרה

מבחינה היסטורית, C ייצג את NULL כמספר 0 (כלומר 0x00). כיום זה יכול להיות קצת יותר מסובך, ומשתנה בהתאם למערכת ההפעלה. בדרך כלל תוכל לבדוק אם יש NULL באמצעות ptr == 0, אך ישנם מקרי פינה בהם הדבר עלול לגרום לבעיה. אולי חשוב מכך, השימוש ב- NULL מבהיר שאתה עובד עם עצות לאנשים אחרים הקוראים את הקוד שלך.

טיפים

אתה יכול להשתמש בצ'ק אין זה בזמן לולאות בדיוק כמו כל אחד אחר: בעוד (NULL == ptr) {

מוּמלָץ: