Кантип нөлдү текшерүү керек C: 7 кадам (Сүрөттөр менен)

Мазмуну:

Кантип нөлдү текшерүү керек C: 7 кадам (Сүрөттөр менен)
Кантип нөлдү текшерүү керек C: 7 кадам (Сүрөттөр менен)

Video: Кантип нөлдү текшерүү керек C: 7 кадам (Сүрөттөр менен)

Video: Кантип нөлдү текшерүү керек C: 7 кадам (Сүрөттөр менен)
Video: ФОТОШОП БОЛЬШЕ НЕ НУЖЕН! Превью в GIMP 2024, Май
Anonim

C тилинде NULL - бул символдук туруктуу, ал дайыма эсинде жок чекитти көрсөтөт. Көптөгөн программисттер аны 0ге барабар деп эсептешсе да, бул жөнөкөйлөтүү, кийинчерээк сизди чалындырат. Көрсөткүчтөрүңүздү NULLден түз текшерип, башка контекстте 0 колдонуу эң жакшы. Бул кодуңузду таза жана түшүнүүгө оңой сактайт, анткени сиз NULL көргөн сайын көрсөткүчтөр менен иштеп жатканыңызды билесиз.

Кадамдар

2 ичинен 1 -бөлүк: Бош текшерүүнү аткаруу

C 1 -кадамдагы нөлдү текшериңиз
C 1 -кадамдагы нөлдү текшериңиз

Кадам 1. Стандарттык текшерүү кодун колдонуңуз

Төмөндө нөл текшерүүнү жазуунун эң ачык жолу. Биз колдонобуз ptr бул макалада сиз текшерип жаткан көрсөткүчтүн аты катары.

  • эгер (ptr == NULL)

    {

    // код эгер көрсөткүч NULL болсо

    } башка {

    // код NULL болбосо

    }

C кадамында Null текшерүү 2
C кадамында Null текшерүү 2

Кадам 2. Кандайдыр бир маанини текшериңиз, бирок NULL

Кээде анын ордуна теңсиздикти текшерүү ыңгайлуу болот. Бул жерде сюрприз жок:

  • if (ptr! = NULL) {

    // код NULL болбосо

    }

C кадамында Null текшерүү 3
C кадамында Null текшерүү 3

Кадам 3. Каталарды болтурбоо үчүн биринчи NULL жазыңыз (милдеттүү эмес)

PTR == NULL методунун негизги кемчилиги - бул көрсөткүчкө NULL маанисин ыйгарып, кокустан анын ордуна ptr = NULL терүү мүмкүнчүлүгү. Бул чоң баш оорусуна алып келиши мүмкүн. Теңдикти текшерүү операнддарды симметриялуу карагандыктан, жазуу менен так ушундай жыйынтыкка жетүүгө болот эгер (NULL == ptr) анын ордуна Бул ката жазууга туруктуу, анткени кокусунан NULL = ptr жөнөкөй компиляция катасын жаратат.

Бул кээ бир программисттерге бир аз ыңгайсыз көрүнөт, бирок бул абдан туура. Сиз колдонгон ыкма жеке каалооңузга жана компиляторуңуз if (ptr = NULL) катасын аныктоодо канчалык жакшы экенине жараша болот

C кадамында Null текшерүү 4
C кадамында Null текшерүү 4

Кадам 4. Өзгөрмө чын экенин текшериңиз

Жөнөкөй эгер (ptr) ptr ЧЫНДЫГЫН текшерет. Эгерде ptr NULL болсо, же ptr 0 болсо, ал FALSE кайтып келет. Көп учурда айырмачылыктын мааниси жок, бирок бул бардык архитектурада бирдей эмес экенин билиңиз.

Мунун тескери жагы эгер (! ptr), эгерде ptr ЖАЛГАН болсо, ЧЫНДЫГЫН кайтарат.

2 ичинен 2 -бөлүк: каталардан алыс болуу

C кадамында Null текшерүү 5
C кадамында Null текшерүү 5

Кадам 1. NULL текшерүүдөн мурун көрсөткүчтү коюңуз

Бир жалпы ката - бул жаңы түзүлгөн көрсөткүч NULL мааниге ээ деп ойлоо. Бул туура эмес. Белгиленбеген көрсөткүч дагы эле сиз белгилеген эмес, эстутум дарегин көрсөтөт. Бул пайдасыз даректи кокусунан колдонбоо үчүн, жаңы түзүлгөн же жаңы бошотулган көрсөткүчтөрдү NULLго коюу кадимки практика.

  • Бул катадан алыс болуңуз:

    char *ptr;

    эгер (ptr == NULL)

    {

    // Бул ФАЛС кайтарат. Көрсөткүчкө жарактуу маани ыйгарылды.

    }

  • Анын ордуна жазыңыз:

    char *ptr = NULL; // Бул көрсөткүчтү NULLге дайындайт

    эгер (ptr == NULL)

    {

    // Бул көрсөткүч кайра дайындалбаса, ЧЫНДЫГЫН кайтарат.

    }

C кадамында Null текшерүү 6
C кадамында Null текшерүү 6

Кадам 2. NULL кайтара турган функцияларга көңүл буруңуз

Эгерде функция NULL кайтара алса, анда бул мүмкүнбү же жокпу, ошондо кодуңузда көйгөйлөр жаралабы деп ойлонуп көрүңүз. Бул жерде null текшерүүнү колдонгон malloc функциясынын мисалы (эгер (ptr)) жарактуу мааниге ээ болгон көрсөткүчтөрдү гана иштетүүнү камсыз кылуу үчүн:

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

    эгер (ptr) {

    int i;

    үчүн (i = 0; i <N; ++ i)

    ptr = i;

    }

C кадамында Null текшерүү 7
C кадамында Null текшерүү 7

Кадам 3. NULL 0 экенин түшүнүңүз, бирок тактык үчүн көрсөткүчтөр менен иштөөдө дайыма 0 ордуна NULL колдонушуңуз керек

Тарыхта, C NULL санын 0 (башкача айтканда 0x00) катары көрсөткөн. Бүгүнкү күндө ал бир аз татаалыраак болуп, иштөө тутумуна жараша өзгөрүшү мүмкүн. Сиз адатта NULL колдонуп текшере аласыз ptr == 0, бирок бул көйгөйдү жаратышы мүмкүн болгон бурчтук учурлар бар. Балким, андан да маанилүүсү, NULL колдонуу сиздин кодду окуган башка адамдар үчүн көрсөткүчтөр менен иштеп жатканыңызды айкын кылат.

Кеңештер

Сиз бул текшерүүнү башка циклдар сыяктуу эле циклдарда колдоно аласыз: while (NULL == ptr) {

Сунушталууда: