Пустая строка в условии

Хочу вывести слово если строка пустая. Вот так работает:

#include <iostream>

int main()
{
        char q[]{'\0'};

        if(!q[0])
                std::cout << "hello" << std::endl;

        return 0;
}

А вот так нет:

#include <iostream>

int main()
{
        char q[]{'\0'};

        if(!q)
                std::cout << "hello" << std::endl;

        return 0;
}

Почему?


Ответы (1 шт):

Автор решения: Harry

Потому что q усть массив, по сути - адрес первого элемента. А поскольку первый элемент - каким бы он ни был - всегда существует и имеет адрес, то q - всегда имеет ненулевое значение. А !q, соответственно, нулевое, т.е. "ложь"...

→ Ссылка