Hola expertos del foro
Me gustaria saber si por favor me ayudaran en como puedo cambiar la direccion de mas de un puntero usando una función.
Usualmente hago asignaciones de memoria, estas las hago en funciones por ejemplo tengo una cadena char * llamada "Texto".
Pongo el siguiente codigo con la finalidad de que el puntero char * Texto obtenga memoria, esa asignacion la hago para que la funcion que asigna memoria me devuelva la nueva dirección para el puntero, la funcion devuelve el nuevo char * ya que si no lo hago asi y no devuelvo el puntero, el compilador me devuelve excepciones o surgen errores en la memoria.
Texto = NuevaMemoria(Texto, ColumnaActual + 1);
Este seria el codigo que me asigna la nueva memoria:
unsigned char *NuevaMemoria(unsigned char *Texto, long Tam)
{
unsigned char *p2;
if ((p2 = (unsigned char *)realloc(Texto, Tam)) == NULL) // Realoja memoria
{
if (Texto) // No hubo memoria suficiente
free(Texto);
Texto = NULL;
printf("Error en memoria, programa interrumpido...");
exit(1);
}
return p2;
}
¿¿¿Como hago para que la función no tenga que devolver un puntero char * y la variable *Texto pueda asignarse correctamente y pueda cambiar mas punteros en una sola funcion? usando acaso un doble puntero?
Me podrian hacer el favor de explicarme el procedimiento con listas enlazadas ya que tengo el mismo problema:
typedef struct elementos * Listadb;
Listadb Reubicar(Listadb p, Listadb q, Listadb *pp, long Limite)
{
long Contx;
p = *pp;
for (Contx = 0; Contx < Limite; Contx++) // Llega a la linea Actual
p = p->Siguiente;
q = q->Siguiente;
return p;
}
¿Como puedo hacer que tanto *p, como *q conserven el valor que les asigno en la función sin tener que devolver ese puntero nuevo?
Gracias por cualquier ayuda