Cuando pones un array unidimensional puedes poner:
Código:
...
void funcion(int arraglo[])
...
En esencia un array es un puntero, por eso puedes escribirlo de ambas maneras, lo que haces con el operador "[]" es obtener el valor que está en la posición de memoria que le indicas.
Cuando es un arreglo multidimensional puedes dejar vacío el primer par de corchetes y debes colocar el tamaño que tendrán las demás dimensiones, esto es necesario por la forma en la que el C/C++ almacena los arreglos multidimensionales en memoria (como arreglos unidimensionales) y por la forma en la que accede a cada una de las posiciones de memoria.
Saludos