Una cosa: las variables static tiene una posicion de memoria constante; si usas una referencia no podras bloquear memoria para esa variable estatica, por lo que (a menos que me salte algo) solo puedes usarla para referenciar otros elementos del mismo tipo. Si la envias a una funcion y la haces apuntar a alguna variable de dentro de la funcion, perderá su puntero junto con el ambito (scope) de la variable de dentro de la funcion al finalizar la funcion, a menos que le asignes algo global:
Código C:
Ver originalvoid set(U16 *m) {
U16 dato = 100;
*m = dato;
//ahora 'm' vale 100
}
int main() {
static U16 *m;
set(&m);
printf("%d", *m
);//violacion de segmento
...
}
En la funcion set asignas el valor de la direccion de memoria de 'dato' a 'm'; hasta aquí todo bien, el problema está en que al finalizar la funcion la variable 'dato' se destruye (termina su ambito) y la posicion de memoria que usaba (a la que ahora apunta 'm') deja de ser accesible por la aplicacion, significa que después de finalizar la funcion la variable 'm' apunta a una direccion de memoria no valida y cualquier operacion posterior sobre esa direccion (ya sea asignacion o lectura) provoca una violacion de segmento. Eso solo funciona con variables globales o con memoria dinamica.
Para que quieres usar un puntero estatico?
Saludos
vosk