Todo lo que definas en un determinado ámbito (Ej. una función, un bucle, un par de llaves...), se destruirá al salir de ese ámbito, a excepción de variables globales y campos static. Los parámetros de una función están dentro del ámbito de la función.
Pasar un parámetro lo único que hace es copiarlo. Si pasas una clase, llamas al constructor de copia. La excepción es pasar parámetros por referencia de este modo:
Código
void func(string &arg){}
Dicho esto, todo lo que se deduzca de aquí, pues así será xD
Citar
¿En ese caso apuntaría a null el que le paso de parámetro no?
El que le pasas de parámetro, es un puntero. En ningún momento, los cambios que le hagas al puntero, se verán fuera de la función. Solo se verán los cambios que le hagas al objeto apuntado, que no es el caso del ejemplo que pusiste.
Así que no, no apuntará a NULL. E incluso en otro tipo de planteamiento, aunque se destruya un objeto, los punteros que apunten a él seguirán apuntando a la misma dirección de memoria (sería de hecho absurdo que el programa buscase todos los punteros a ese objeto y los igualase a NULL)