Estimado, tal vez aún no lo han dado en clase, pero el problema que planteas tiene que ver con el scope (o alcance) de las variables, y la asignación de punteros en C.
Puedes googlear esos conceptos o mirar aqui para mas: https://www.tutorialspoint.com/cprogramming/c_scope_rules.htm
Lo que está sucediendo en tu caso es que la variable Aaux tiene un alcance limitado a la función invertir. La asignación = para arreglos (Ainv = Aaux) copia la dirección del puntero asociado al arreglo, es decir, ahora Ainv apunta a la misma dirección de memoria que apunta Aaux. El problema es que como el alcance de Aaux se restringe a la función invertir, una vez que se retorne de la función invertir, el puntero a Aaux se libera, y como Ainv solo estaba apuntando a su misma dirección, vuelve a quedar ´flotando´ por así decir.
Como tú bien dices la solución esperada es trabajar directamente sobre Ainv, pero si te quedaba cómodo copiar una variable auxiliar con alcance local, no queda más remedio que la estrategia conocida como deepcopy (copia profunda): se debe copiar elemento a elemento, de forma de no modificar la dirección de memoria asociada al puntero Ainv, sino los valores de cada elemento apuntado (deberías hacer Ainv[0][0] = Aaux[0][0]; Ainv[0][1] = Aaux[0][1];... etc, etc. notar que se puede hacer o bien con nueve sentencias o bien con dos fors anidados).
Si los detalles se te escapan es porque ya se verá más adelante en el curso. Cualquier otro comentario, a las órdenes