Ok, pero el primer caso me daba error, no podía si quiera mostrar la dirección de memoria..
Pongamos un caso. Desde un programa escribes esa estrucutra y se escribe la direccion del char*.
Desde otro programa, lees esa dirección en la estructura. Esa dirección casi seguro que no pertenece a tu programa, es una dirección de memoria a la que tu programa no tiene acceso. Intentar leerla, en muchos casos, dará un error.