bien! gracias entonces pero y?
declarar todas las variables como globales ?
digamos quiero retornar un puntero a char pero el valor lo obtengo dentro de la funcion...
se hace de la misma manera. debes devolver la direccion del puntero.
Bueno, primero una cosa. Lo que pretendes hacer en a() no se hace así. Cuando declaras la variable x, su ámbito de visibilidad se limita a la función donde la declaras. Aun en el caso de que funcionara, no es la manera correcta de llevarlo a cabo.
Para hacer algo como lo que quieres hacer, se utiliza:
int* p = new int; // si estas en C++
int *p
= malloc(sizeof(int)); /* Si estas en C*/
Por lo demás, ¿qué pasa con el valor 10? No pasa absolutamente nada. Se queda por ahí, en algún lugar de la memoria, solo y abandonado sin que nadie pueda acceder a él Y_Y. ¿No te da penita? No se puede liberar la memoria ocupada por el 10 hasta que finalice el programa.
En fin, cuando ya no necesites más la memoria reservada, haces:
delete p;
Se puede implementar un recolector de basura automático, como en Python.
Aquí hay un ejemplo.
en este caso, a mi me parece que utilizar memoria dinamica es irrelevante. No es necesario.
Saludos.