Cita: Los arrays SIEMPRE tienen una cantidad de elementos fija.
En cualquier caso, como te dijo Instru, las funciones se suelen hacer pasando punteros **, y otro valor que indique el tamaño de lo que estás pasando.
Por otra parte, te desaconsejo completamente el uso de matrices dobles.
Y para hacer la función que quieres, basta usar un memcpy() :)
vale si el quieres hacer su propia funcion especial para copiar matrices, esta en todo su derecho.
Te sigo diciendo que uses punteros dobles. Con eso no te debes preocupar por el tamaño ya que este va a ser dinamico.
Saludos