determinar el tamaño de la matriz si se pasa a la función
¿Es posible determinar el tamaño de una matriz si se pasó a otra función (no se pasa el tamaño)? La matriz se inicializa como int array[] = { XXX } ..
Entiendo que no es posible hacer sizeof ya que devolverá el tamaño del puntero. La razón por la que pregunto es porque necesito ejecutar un bucle for dentro de la otra función donde se pasa la matriz. Intenté algo como:
for( int i = 0; array[i] != NULL; i++) {
........
}
Pero noté que en el extremo cercano de la matriz, la matriz [i] a veces contiene valores basura como 758433, que no es un valor especificado en la inicialización de la matriz.
Las otras respuestas pasan por alto una característica de C++. Puede pasar matrices por referencia y utilizar plantillas:
template <typename T, int N>
void func(T (&a) [N]) {
for (int i = 0; i < N; ++i) a[i] = T(); // reset all elements
}
entonces puedes hacer esto:
int x[10];
func(x);
pero tenga en cuenta que esto solo funciona para matrices , no para punteros.
Sin embargo, como han señalado otras respuestas, usar std::vector
es una mejor opción.
Si está bajo su control, use un contenedor STL como un vector o deque en lugar de una matriz.