Depende. Si se trata de una matriz dinámicamente asignada, es decir, la creó llamando a malloc, entonces, como otros sugieren que debe guardar el tamaño de la matriz/número de elementos en algún lugar o tener un centinela (una estructura con un valor especial, que será el el último).
Si se trata de una matriz estática, puede dimensionar su tamaño/tamaño de un elemento. Por ejemplo:
int array[10], array_size;
...
array_size = sizeof(array)/sizeof(int);
Tenga en cuenta que, a menos que sea global, esto sólo funciona en el ámbito en el que la inicialización del array, ya que si pasado a otra función, el fichero es decayeron a un puntero.
Espero que ayude.
+1 Normalmente utilizo punteros para estructurar de modo que pueda estar seguro de que 'NULL' es un centinela único. –
Creo que seguir el modelo de cadena terminada en nulo es una mala idea – hasen
@hasen j: estoy de acuerdo, a menos que sepa que siempre tiene que iterar a través de la matriz completa cada vez, en cuyo caso un centinela puede aclarar un poco el código. El problema con el centinela es que puede terminar con el comportamiento O (N) donde O (1) lo habría hecho, y no siempre darse cuenta. – quark