Что НЕ означает char_pointer?

Я просматривал код, написанный другими, и наткнулся на «если», я не понимаю:

if (!buffer || len == 0)

в функции

void getText(const char* objName, char* buffer, uint16_t len)

буфер, передаваемый в функцию, представляет собой объявленный массив символов: char buff[10]={0};

Что означает «!buffer»? Если бы это было логическое значение, это имело бы для меня смысл, но я никогда раньше не видел такого утверждения, как Not Char_Pointer. Можете ли вы объяснить это, пожалуйста?


person IGee    schedule 24.03.2017    source источник


Ответы (1)


Это означает «не нуль». Когда вы используете любой тип с логическим оператором, он "контекстно преобразуется в bool", если это возможно, а для указателей результатом преобразования является true, если указатель не нулевой. См. логические преобразования в http://en.cppreference.com/w/cpp/language/implicit_conversion для получения подробной информации.

Я предполагаю, что вы используете C или C++ из синтаксиса, но в целом вы должны помечать вопросы языком программирования.

person Alexey Romanov    schedule 24.03.2017