a y b son punteros, a es constante y b no.
Pero como los punteros son una cosa tal vez extraña, permiteme explicarlo asi:
olvidemos un rato que "puntero" = "direccion de memoria"
y para entenderlo mejor digamos que
puntero = papel con la direccion de una casa, edificio o monumento de la ciudad.
Ahora si te quedas conmigo en esta explicacion, tal vez tenga mas sentido lo que pasa con la funcion de arriba.
a = papel con la direccion de un edificio con 10 pisos, papel que por alguna razon no podemos borrar
b = papel sin direccion inicial, el que si podemos borrar!!!
invocas la funcion, y para no usar tu funcion con nombres malos, usare la que recomendé, una linda funcion con 2 papeles, llamados "x" e "y"
Invóquese la funcion entonces:
el papel "x" COPIA y escribe lo que a tiene, x entonces tiene la direccion de un edificio de 10 pisos
el papel "y" COPIA escribe lo que b tiene, o sea basura, o nada, como quieras.
el papel "x" usa la informacion que tiene para IR a la direccion del edificio y pintarlo, si quiere.
el papel "y" modifica lo que "b" le paso y escribe OTRA direccion, por ejemplo, de un monumento en la ciudad.
El papel "b" desde afuera, enojado, indica que no lo han modificado y claro, el papel "y" no se preocupa por que él tiene su propia informacion y hace lo que quiere con ella.
Por qué el papel "y" modificaría a "b", si en este lenguaje lo unico que tenemos son COPIAS????
Ahora no es tan cierto que lo UNICO que tenemos son copias, pero tu en tu funcion eso es lo que estas ejercitando. Las copias.
Fin.
p.s. No tiene relevancia el que "a" sea constante ( y no se puede modificar ) y que b si se pueda. Ambos son pasados por valor y se copian las direcciones que ellas guardan.