Каждая позиция в массиве C в границах массива всегда существует, поэтому нет необходимости проверять наличие случайной позиции на наличие. Все, что вам нужно сделать, это убедиться, что индекс находится внутри границ.
Если массив объявлен со статическим размером, вы можете получить длину массива через sizeof
:
int array[30];
int length = sizeof(array) / sizeof(int);
// sizeof(array) returns the size in bytes, divide by element size to get element count
Однако, если массив не имеет известной длины во время компиляции, вам придется найти его другим способом. Функции C, работающие с массивами, обычно принимают и указатель на первый элемент, и размер как отдельные аргументы.
void do_something_to(int *items, int item_count);
Вы должны быть особенно осторожны при передаче массивов функциям, так как массив, переданный функции, становится «простым указателем», и компилятор теряет всю дорожку своего размера (sizeof сообщит о размере указателя). ИМХО, это наименее сбивает с толку, чтобы вообще избегать аргументов массива и просто придерживаться указателей.