Какво е nullptr в C++

Kakvo E Nullptr V C



В C++ конкретна стойност на указател, наречена a нулев указател се използва, за да покаже, че указателят не препраща към валидно място в паметта. В стандарт C++11 или по-нов, той е представен от ключовата дума „ nullptr ” или с постоянната стойност 0.

The нулев указател Идеята е от решаващо значение, защото помага за предотвратяване на погрешни достъпи до паметта, което може да доведе до неочаквани грешки по време на изпълнение и софтуерни повреди. Помислете за сценария, когато програма се опитва да чете от или да пише на адрес в паметта, който или не е създаден, или който вече е освободен. Това поведение е недефинируемо в C++ и може да доведе до сериозни проблеми по време на изпълнение или пропуски в сигурността. Указателят е невалиден и не трябва да се дереферира, ако се свързва с нулева стойност. Прекратяване на програмата, грешки в сегментирането или неоторизиран достъп до паметта са само няколко примера за неочаквано поведение, което може да се случи при дерефериране на нулев указател .

Пример за nullptr в C++

#include
използвайки пространство от имена std ;
вътр основен ( )
{
nullptr_t pi1, pi2 ;
ако ( pi1 >= pi2 )
{
cout << „Показател 1 е по-голям от стойността на показалец 2“ << endl ;
}
друго
{
cout << „Показателят 2 е по-голям от стойността на показалеца 1“ << endl ;
}
въглен * гл = pi1 ;
ако ( гл == nullptr )
cout << „Променливата на указателя ch има нулева стойност с препратка към 0-ия адрес“ << endl ;
друго
cout << „Променливата на указателя ch не е нулева стойност, а има някаква стойност с препратка към адрес“ << endl ;
връщане 0 ;
}

В горния код използваме две nullptrs и да ги сравнявате един с друг. След това използваме указателя на символа, за да потвърдим nullptr .







Изход



Причини да използвате nullptr в C++

Нулеви указатели често се използват в програмирането на C++ поради няколко причини:



1: Инициализиране на указатели

Когато се декларира указателна променлива, тя винаги трябва да се инициализира с валидно място в паметта или a нулев указател . Когато указателят е достъпен по-късно в кода, това помага да се предотврати недекларирано поведение.





2: Код на грешка

Функциите могат да се върнат нулеви указатели като кодове за грешки, за да покажат, че не са успели да завършат определеното действие или да разпределят памет.

3: Проверка на валидността на указателя

Проверката на валидността на указателя преди дереферирането му винаги е умна идея. Това повишава устойчивостта на кода и помага за предотвратяване на неочаквани грешки по време на изпълнение.



4: Полиморфизъм

В C++ указателите на базовия клас, които не сочат към никакви обекти на производни класове, са представени от нулеви указатели . Това обикновено се използва в полиморфното програмиране за обработка на обектно-ориентирани функции като наследяване и виртуални функции.

Нулеви указатели не трябва да се бърка с висящи или неинициализирани указатели, жизненоважно е да запомните това. Неинициализираните указатели могат да сочат към всеки адрес в паметта, тъй като не са инициализирани със стойност. Висящите указатели, от друга страна, са тези, които се отнасят до невалидни или вече освободени области на паметта. В програмирането на C++ висящите указатели и неинициализираните указатели имат потенциал да доведат до проблеми по време на изпълнение.

Предимства от използването на nullptr в C++

Има няколко предимства от използването на a nullptr .

1: Безопасност

защото nullptr е по-безопасен за тип от NULL, трябва да се използва вместо него. Докато NULL просто се дефинира като целочислена константа със стойност нула, nullptr е литерал на указател, който може да се трансформира само в тип указател, а не в друг тип.

2: Използваемост

В програмирането на C++ има много начини за използване на нулев указател . Инициализиране на указатели, изпращане на параметри към извиквания на функции или връщане на стойности на указатели от функции, като примери, са някои от възможните му приложения. Може също да се използва за определяне дали извикване на функция или действие е дало легитимна стойност на указател.

3: Динамично разпределение на паметта

Динамичното разпределение на паметта е сред най-популярните приложения на a нулев указател . С помощта на новия оператор в C++ се осъществява динамично разпределение на паметта. При извикване на новия метод се връща указател към прясно генерирания обект. Ако разпределението е неуспешно поради някаква причина, като например липса на достатъчно памет, NULL се изпраща обратно. Следователно е изключително важно да проверите върнатата стойност, преди да използвате указателя, за да сте сигурни, че разпределението е било успешно.

Заключение

The нулев указател е ключова идея в програмирането на C++, която дава механизъм за показване, че липсва адрес в паметта. Разработчиците могат да предотвратят софтуерни сривове и други проблеми, като използват нулеви указатели за да се уверят, че техните приложения не се опитват да получат достъп до грешни адреси на паметта. Така че за програмистите е важно да разберат как нулеви указатели трябва да се използват и да го правят ефективно в своите програми.