C: 7 алхам дахь Null -ийг хэрхэн шалгах вэ (зурагтай)

Агуулгын хүснэгт:

C: 7 алхам дахь Null -ийг хэрхэн шалгах вэ (зурагтай)
C: 7 алхам дахь Null -ийг хэрхэн шалгах вэ (зурагтай)

Видео: C: 7 алхам дахь Null -ийг хэрхэн шалгах вэ (зурагтай)

Видео: C: 7 алхам дахь Null -ийг хэрхэн шалгах вэ (зурагтай)
Видео: Gimp: Эхлэгчдэд зориулсан курс 8: Зургийн хэмжээг өөрчлөх эсвэл өөрчлөх 2024, May
Anonim

C хэл дээр NULL нь санах ойд байхгүй цэгийг үргэлж зааж өгдөг бэлгэдлийн тогтмол юм. Хэдийгээр олон програмистууд үүнийг 0 -тэй тэнцүү гэж үздэг боловч энэ нь таныг дараа нь дуудаж болох хялбарчлал юм. NULL -ийн эсрэг заагчийг шууд шалгаж, бусад контекстэд 0 -ийг ашиглах нь дээр. Энэ нь NULL -ийг харах бүртээ заагчтай ажиллаж байгаагаа мэдэх тул таны кодыг цэвэр, ойлгомжтой байлгадаг.

Алхам

2 -ийн 1 -р хэсэг: Null Check хийх

C алхам 1 дэх Null -ийг шалгана уу
C алхам 1 дэх Null -ийг шалгана уу

Алхам 1. Стандарт null шалгах кодыг ашиглана уу

Дараах нь тэг чек бичих хамгийн ойлгомжтой арга юм. Бид ашиглах болно ptr Энэ нийтлэлд таны шалгаж буй заагчийн нэр болно.

  • хэрэв (ptr == NULL)

    {

    // заагч нь NULL байвал код

    } өөр {

    // код NULL биш бол

    }

C алхам 2 дахь Null -ийг шалгана уу
C алхам 2 дахь Null -ийг шалгана уу

Алхам 2. NULL -ээс бусад утгыг шалгана уу

Заримдаа тэгш бус байдлыг шалгах нь илүү тохиромжтой байдаг. Энд гайхах зүйл алга:

  • if (ptr! = NULL) {

    // код NULL биш бол

    }

C алхам 3 дахь Null -ийг шалгана уу
C алхам 3 дахь Null -ийг шалгана уу

Алхам 3. Алдаа гаргахгүйн тулд эхлээд NULL бичнэ үү (заавал биш)

PTR == NULL аргын гол сул тал бол та санамсаргүйгээр ptr = NULL гэж бичиж, заагч руу NULL утгыг өгөх боломж юм. Энэ нь том толгой өвдөхөд хүргэдэг. Тэгш байдлыг шалгах нь операндуудыг тэгш хэмтэй авч үздэг тул та бичээд яг ижил үр дүнд хүрч чадна. хэрэв (NULL == ptr) оронд нь Санамсаргүй NULL = ptr нь энгийн хөрвүүлэх алдаа үүсгэдэг тул энэ нь бичгийн алдаанд илүү тэсвэртэй байдаг.

Зарим програмистуудад энэ нь жаахан эвгүй санагддаг, гэхдээ энэ нь үнэхээр хүчин төгөлдөр юм. Таны ашиглаж буй арга барил нь хувийн сонголтоос хамаардаг бөгөөд хөрвүүлэгчийн if (ptr = NULL) алдааг хэр сайн илрүүлж чаддагт хамаарна

C алхам 4 дэх Null -ийг шалгана уу
C алхам 4 дэх Null -ийг шалгана уу

Алхам 4. Хувьсагч үнэн эсэхийг шалгах

Энгийн хэрэв (ptr) ptr ҮНЭН эсэхийг шалгадаг. Хэрэв ptr NULL, эсвэл ptr 0 байвал FALSE буцаана. Ялгаа нь олон тохиолдолд хамаагүй, гэхдээ эдгээр нь бүх архитектурын хувьд ижил биш гэдгийг анхаарна уу.

Үүний эсрэг тал нь юм хэрэв (! ptr), хэрэв ptr ХУДАЛ байвал ҮНЭН буцаана.

2 -р хэсгийн 2: Алдаа гаргахгүй байх

C алхам 5 дахь Null -ийг шалгана уу
C алхам 5 дахь Null -ийг шалгана уу

Алхам 1. NULL шалгахын өмнө заагчийг тохируулна уу

Нэг нийтлэг алдаа бол шинээр үүсгэсэн заагчийг NULL утгатай гэж үзэх явдал юм. Энэ нь үнэн биш юм. Төлөвлөөгүй заагч нь санах ойн хаягийг зааж өгсөн хэвээр байгаа бөгөөд таны зааж өгсөн хаяг биш юм. Энэхүү ашиггүй хаягийг санамсаргүйгээр ашиглахгүй байхын тулд шинээр үүсгэсэн эсвэл шинээр чөлөөлөгдсөн заагчийг NULL болгож тохируулах нь ердийн практик юм.

  • Энэ алдаанаас зайлсхийх хэрэгтэй:

    char *ptr;

    хэрэв (ptr == NULL)

    {

    // Энэ нь ХУДАЛ буцах болно. Заагчийг зөв утга оноосон байна.

    }

  • Үүний оронд бичнэ үү:

    char *ptr = NULL; // Энэ нь заагчийг NULL гэж оноодог

    хэрэв (ptr == NULL)

    {

    // Хэрэв заагчийг дахин оноож өгөөгүй бол энэ нь ҮНЭН болно.

    }

C алхам 6 дахь Null -ийг шалгана уу
C алхам 6 дахь Null -ийг шалгана уу

Алхам 2. NULL буцаах боломжтой функцүүдэд анхаарлаа хандуулаарай

Хэрэв функц NULL буцаах боломжтой бол энэ нь боломж байгаа эсэх, энэ нь таны кодын дараа асуудал үүсгэж болзошгүй эсэхийг бодож үзээрэй. Null check ашиглан malloc функцын жишээг энд үзүүлэв (хэрэв (ptr)) нь зөвхөн хүчин төгөлдөр утгатай заагчтай ажиллахыг баталгаажуулахын тулд:

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

    хэрэв (ptr) {

    int i;

    for (i = 0; i <N; ++ i)

    ptr = i;

    }

C алхам 7 дахь Null -ийг шалгана уу
C алхам 7 дахь Null -ийг шалгана уу

Алхам 3. NULL бол 0 гэдгийг ойлгоорой, гэхдээ ойлгомжтой байхын тулд заагчтай ажиллахдаа үргэлж NULL -ийг 0 -ийн оронд ашиглах ёстой

Түүхийн хувьд C нь NULL -ийг 0 гэсэн тоогоор илэрхийлсэн (өөрөөр хэлбэл 0x00). Өнөө үед энэ нь арай илүү төвөгтэй болж магадгүй бөгөөд үйлдлийн системээс хамаарч өөр өөр байдаг. Та ихэвчлэн NULL ашиглан шалгаж болно ptr == 0, гэхдээ энэ нь асуудал үүсгэж болзошгүй булангийн тохиолдлууд байдаг. NULL -ийг ашиглах нь таны кодыг уншиж буй бусад хүмүүст зориулсан заагчтай ажиллаж байгаа нь илүү чухал байж магадгүй юм.

Зөвлөмж

Та энэ шалгалтыг бусад бусадтай адил гогцоонд ашиглаж болно. байхад (NULL == ptr) {

Зөвлөмж болгож буй: