C: 7 қадамында нөлді қалай тексеруге болады (суреттермен)

Мазмұны:

C: 7 қадамында нөлді қалай тексеруге болады (суреттермен)
C: 7 қадамында нөлді қалай тексеруге болады (суреттермен)

Бейне: C: 7 қадамында нөлді қалай тексеруге болады (суреттермен)

Бейне: C: 7 қадамында нөлді қалай тексеруге болады (суреттермен)
Бейне: #Shorts GIMP for Beginners: How to Organize Tool Icons (Video Coming Soon) 2024, Мамыр
Anonim

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

Қадамдар

2 бөлімнің 1 бөлігі: Нөлдік тексеруді орындау

C қадамындағы нөлді тексеріңіз 1 -қадам
C қадамындағы нөлді тексеріңіз 1 -қадам

Қадам 1. Стандартты нөлдік тексеру кодын қолданыңыз

Төменде нөлдік чек жазудың ең айқын әдісі берілген. Біз қолданамыз ptr бұл мақалада сіз тексеретін көрсеткіштің аты ретінде.

  • егер (ptr == NULL)

    {

    // коды, егер көрсеткіш NULL болса

    } басқа {

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

    }

C қадамында нөлді тексеріңіз
C қадамында нөлді тексеріңіз

2 -қадам. NULL мәнінен басқа кез келген мәнді тексеріңіз

Кейде оның орнына теңсіздікті тексеру ыңғайлы. Мұнда таңқаларлық ештеңе жоқ:

  • егер (ptr! = NULL) {

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

    }

C қадамындағы нөлді тексеріңіз
C қадамындағы нөлді тексеріңіз

Қадам 3. Қателерді болдырмау үшін алдымен NULL жазыңыз (міндетті емес)

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

Бұл кейбір бағдарламашыларға ыңғайсыз болып көрінеді, бірақ бұл өте дұрыс. Сіз қолданатын әдіс жеке қалауыңызға байланысты және компиляторыңыз if (ptr = NULL) қатесін анықтауда қаншалықты жақсы

C 4 -қадамда нөлді тексеріңіз
C 4 -қадамда нөлді тексеріңіз

Қадам 4. Айнымалының ақиқаттығын тексеріңіз

Қарапайым егер (ptr) ptr TRUE екенін тексереді. Егер ptr NULL болса немесе ptr 0 болса, ол FALSE қайтарады. Айырмашылық көп жағдайда маңызды емес, бірақ олар барлық архитектурада бірдей емес екенін ескеріңіз.

Мұның керісінше егер (! ptr), егер ptr FALSE болса, ол TRUE қайтарады.

2 бөліктің 2 бөлігі: қателіктерден аулақ болу

5 -қадамда нөлді тексеріңіз
5 -қадамда нөлді тексеріңіз

Қадам 1. NULL тексермес бұрын көрсеткішті орнатыңыз

Жалпы қателіктердің бірі - жаңадан құрылған көрсеткіштің NULL мәні бар деп ойлау. Бұл дұрыс емес. Белгіленбеген көрсеткіш әлі де сіз көрсеткен жад мекенжайын көрсетеді. Бұл пайдасыз мекенжайды кездейсоқ пайдаланбау үшін жаңадан құрылған немесе жаңадан босатылған көрсеткіштерді NULL мәніне қою әдеттегі тәжірибе.

  • Бұл қатеден аулақ болыңыз:

    char *ptr;

    егер (ptr == NULL)

    {

    // Бұл ЖАЛҒАН болады. Көрсеткішке жарамды мән тағайындалды.

    }

  • Оның орнына жазыңыз:

    char *ptr = NULL; // Бұл көрсеткішті NULL -ге тағайындайды

    егер (ptr == NULL)

    {

    // Егер көрсеткіш қайта тағайындалмаса, бұл TRUE мәнін қайтарады.

    }

6 -қадамда нөлді тексеріңіз
6 -қадамда нөлді тексеріңіз

Қадам 2. NULL қайтаратын функцияларға назар аударыңыз

Егер функция NULL қайтара алса, бұл мүмкін бе және бұл сіздің кодыңызда кейінірек проблемалар тудыруы мүмкін бе деп ойланыңыз. Нөлдік тексеруді қолданатын malloc функциясының мысалы (егер (ptr)) тек жарамды мәндері бар көрсеткіштерді өңдейтініне көз жеткізу үшін:

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

    егер (ptr) {

    int i;

    үшін (i = 0; i <N; ++ i)

    ptr = i;

    }

7 -қадамда нөлді тексеріңіз
7 -қадамда нөлді тексеріңіз

3 -қадам. NULL - 0 екенін түсініңіз, бірақ түсінікті болу үшін көрсеткіштермен жұмыс істеу кезінде әрқашан NULL мәнін 0 орнына қолдану керек

Тарихи тұрғыдан алғанда, C NULL -ді 0 санымен (яғни 0x00) көрсетті. Қазіргі уақытта ол біршама күрделене түседі және операциялық жүйеге байланысты өзгереді. Әдетте NULL көмегімен тексеруге болады ptr == 0, бірақ бұл мәселе тудыруы мүмкін бұрыштық жағдайлар бар. Ең бастысы, NULL пайдалану сіздің кодты оқитын басқа адамдар үшін көрсеткіштермен жұмыс жасайтындығыңызды көрсетеді.

Кеңестер

Сіз бұл тексеруді кез келген басқа циклдар кезінде пайдалана аласыз: while (NULL == ptr) {

Ұсынылған: