Te dejo unos BURDOS ejemplos; doble puntero:
Código:
void unaCadena(char **s)
{
*s = (char*)malloc(32);
memset(*s, 0, 32);
strcpy(*s, "HOLA");
}
Puntero a referencia (C++):
Código:
void unaCadena(char *&s)
{
s = (char*)malloc(32);
memset(s, 0, 32);
strcpy(s, "HOLA");
}
Para probarlo (en el segundo caso saca el ampersand - & - antes de ptr):
Código:
void main()
{
char *ptr = 0;
unaCadena(&ptr);
printf("%s\r\n", ptr);
}