Одним из очевидных решений является использование STL. Если это не возможно, лучше передать длину массива явно.
Я скептически отношусь к использованию трюка с ценностью для этого конкретного случая. Оно работает
лучше с массивами указателей, потому что NULL - хорошее значение для часового. С
массив целых чисел, это не так просто - нужно иметь
«магическое» значение дозорного, которое
не хорошо.
Примечание: если ваш массив определен и инициализирован как
int array[] = { X, Y, Z };
в том же объеме, что и ваш цикл, тогда
sizeof (массив) вернет его реальный размер в байтах, а не размер указателя. Вы можете получить длину массива как
sizeof(array) / sizeof(array[0])
Однако, в общем случае, если вы получаете массив в качестве указателя, вы не можете использовать этот трюк.