NULL (C)
От Seo Wiki - оптимизация и програмиране за търсачки
NULLв езиците за програмиране C и C++ е макрос, деклариран в заглавния файл stddef.h (и други заглавни файлове). Стойността на този макрос е зависима от изпълнението константа на нулев указател (на английскиконстанта на нулев указател). Константата с нулев указател е целочислен постоянен израз със стойност 0 или (само в C) същия израз, преобразуван в void *. Константа за нулев указател, преобразувана към всеки тип указател, енулев указател. Гарантирано е, че нулев указател не е равен на указател към който и да е обект (в най-широк смисъл, всякакви данни) или функция. Гарантирано е, че всеки два нулеви указателя са равни. Дереферирането на нулев указател е операция с недефинирано поведение.
Съдържание
Използване
докато в тази версия няма да има грешка
Дерефериране на нулеви указатели
Дереферирането на нулев указател е операция с недефинирано поведение.Не са наложениограничения върху изпълнението: например може да възникне достъп до памет, която не е предназначена за използване от тази програма (т.е. при четене ще се чете „боклук“, а при запис стойността ще бъде записана в област от паметта, която не принадлежи на програмата). Най-често обаче това води до грешка по време на изпълнение (ако операционната система прилага защита на паметта и достъпът до неразпределената памет за процеса е блокиран). Например, в Windows 9x, съобщението „Обща грешка в защитата“ - „Програмата извърши неправомерна операция и ще бъде затворена“ (англ.обща грешка в защитата, GPF) се издава само в случаите, когато програмата осъществява достъп до паметта чрез неправилен (ввключително неинициализиран или вече освободен) указател. В Unix-подобни операционни системи в такива ситуации процесът получава SIGSEGV сигнал и неговият манипулатор отпечатва съобщение „Грешка в сегментирането“.
Нулеви указатели в C++
За разлика от класическия C, в C++ стойността на нулев указател е предварително дефинирана от езиковия стандарт и винаги е равна на 0 (цяло число нула, прехвърлено към типа "указател"). Следователно в програмите на C++ е не само възможно, но и препоръчително да се използва стойността 0 вместо NULL [1] , (за разлика от макроса NULL, числовата стойност не може да бъде случайно заменена), но някои програмисти смятат, че това влошава четливостта на изходния код.