Hola primero quiero comentar que en los arrays de int el ultimo elemento creo que no es \0 como en las cadenas y que sizeof(array) te muestra el tamano del array en bytes pero no si lo pasas a funciones por lo tanto esto no funciona:
Código C++:
Ver originalint a[7]={1,2,3,4};
cout << sizeof(a) << endl;
test(a);
void test(int a[]){
cout << sizeof(a);
}
Te imprime 28 y 4
Puedes saber el tamaño solo fuera de la función.
Para solucionar esto se pueden usar vectores en c++ aunque a mi personalmente no me gustan ya que tienen algunas limitaciones y para c como dije antes me creo una clase o estructura sobrecargo operadores y con memoria dinámica sale perfecto y se pueden agregas funciones para ordenar y se puede conseguir mesclar objetos en un array, me refiero a algo como esto:
Saludos