Как это сделать? ну, я хочу проверить, нет ли массиваПроверьте, не является ли массив C++ Null
ответ
На самом деле, когда у вас есть массив с [SIZE], вы всегда можете проверить:
if(NULL == a)
{
/*...*/
}
Но это не обязательно, если вы не создали динамический массив (с помощью оператора новый).
См. Другие ответы, я не удалю его только потому, что он принят сейчас. Если другой ответ будет принят, я удалю этот «ответ».
EDIT (почти 4 года спустя :))
Как я получаю много вниз голосов за это, я хотел бы уточнить: я знаю это бесполезно и a
будет никогда быть NULL, но он технически отвечает на вопрос о части NULL
.
Да, это делает НЕ значит, массив пуст, НЕ вообще. Как отмечает @JamesMcNellis ниже, массивы не могут быть NULL, только указатели.
Он может быть полезен только для динамически распределенных массивов с инициализированным указателем перед распределением.
Во всяком случае, я буду ждать принятия другого ответа и удалю мою.
СПАСИБО! это именно то, что мой друг сделал! – Luron
@pts - спасибо за edid! Я задавался вопросом, как я могу это сделать (я не видел этого в FAQ), но теперь я знаю. 10x again (: –
@ Luron - приветствую (: Я рад, что помог. BR, Kiril –
Массив в C++ не может быть нулем; только указатель может быть нулевым.
Чтобы проверить, является ли указатель нулевым, вы просто проверяете, сравнивается ли он с NULL
или 0
.
Массив в C++ не может быть «пустым». Когда вы определяете объект массива, вы явно указываете точный размер массива. Этот массив содержит (и всегда будет содержать) то точное количество элементов, которые вы указали в определении. Не больше, не меньше. Он никогда не будет «пустым».
Вы можете использовать либо статические, либо «динамические» массивы. Статический массив будет примерно следующим:
int array[5];
Это представляет собой статический массив из 5 целых элементов. Этот тип массива не может быть нулевым, это массив из 5 неопределенных целых чисел.
«динамический» массив, с другой стороны, было бы что-то вроде этого:
int* array = new array[5];
В этом случае указатель на INT указывает на массив из 5 элементов.Этот указатель может быть нулевым, и вы бы проверить этот случай с простой, если заявление:
if (array == 0)
Стандартная версия new никогда не вернет NULL (хотя версия nothrow может). – Sjoerd
Хотя что-то вроде 'int * array = 0;/* stuff */array = new array [5]; 'будет тратить время, когда' array' пуст. Конечно, объявление переменной, которая не может быть инициализирована, является запахом кода. –
Я согласен с тобой, Дэвид. Первая декларация была только для иллюстрации поведения динамического распределения в противоположность первому автоматическому распределению. – Vintharas
Если вы используете STL vector
или list
, вы можете использовать empty
или метод size
для проверки пустоты:
std::vector<int> v;
if (v.empty()) cout << "empty\n";
if (v.size() == 0) cout << "empty\n";
std::list<int> l;
if (l.empty()) cout << "empty\n";
if (l.size() == 0) cout << "empty\n";
Обычный массив C++ (например, int a[]') or pointer (like
int * a) не знает своих размеров.
Для массивов, объявленных с размером (например, int a[42]
в локальном или глобальном переменной или члене класса), вы можете использовать sizeof(a)/sizeof(a[0])
, чтобы получить заявленный размер (42
в примере), который, как правило, не быть 0. Массивов вы Объявляете путь никогда не NULL
.
- 1. FormCollection Проверьте, является ли Null
- 2. Проверьте, является ли массив ребристым
- 3. Проверьте, является ли результат гидратированной доктрины NULL
- 4. Проверьте, является ли столбец в SQLite NULL или нет NULL
- 5. Проверьте, не является ли элемент в массиве Null/Excel VBA
- 6. Сохраненная процедура Проверьте, является ли параметр NULL
- 7. Проверьте, что массив пуст, но не null
- 8. Проверьте, не является ли null Bluej (Java) не работает
- 9. Проверьте, не является ли компилятор Turbo C++
- 10. Проверьте, является ли массив кратным другому массиву
- 11. PHP: проверьте, является ли объект/массив ссылкой
- 12. Проверьте, не является ли Newtonsoft.Json.Linq.JToken
- 13. Проверьте, является ли двоичный массив подмножеством другого в C
- 14. Проверьте, является ли массив подмножеством другого
- 15. Проверьте, является ли символ цифрой? (В C)
- 16. Проверьте, не является ли какой-либо столбец NOT NULL
- 17. C++ Проверьте, является ли очередь полной?
- 18. Проверьте, не является ли массив символов не мусором? (допустимые символы)
- 19. Проверьте дочерний элемент является NULL
- 20. Проверьте, является ли объект
- 21. Определение, является ли массив значений NULL пустым
- 22. C - Проверьте, является ли str нулевым
- 23. Проверьте, является ли столбец data.frame списка типов NULL
- 24. Проверьте, является ли строка палиндром в C
- 25. Проверьте, является ли файл или каталог не
- 26. Проверьте, не массив ли это индексированный массив
- 27. Проверьте, является ли HtmlString пробелом в C#
- 28. C# - Проверьте, является ли вход int
- 29. jQuery Ответ Ajax Json - проверьте, является ли null
- 30. C++: проверьте, является ли вход номером
Как ваш массив для проверки объявлен? Будь то «пусто» или нет, зависит от того, что вы храните в нем, и ваших критериев для «пустой» записи. –
Вообще говоря, при создании кода на C++ полезно избегать необработанных массивов в пользу более безопасных классов контейнеров), таких как STL). – shuttle87
«array is null» и «array empty» - это две разные вещи. (И вообще, массив не может быть «пустым», хотя он может разлагаться на указатель, а указатели * могут быть равны нулю). – jalf