Tengo un problema con el código de programación en mi programa en lenguaje C

Hola,
Es que tengo un problema. Tengo una función así:
void InsertarSimbolo(tNodoSimb* inicio, tSimb simb){
tNodoSimb * p;
p = malloc(sizeof(tNodoSimb));
p->simbolo = simb;
p->sig = inicio;
inicio = p;
}
si al hacer la llamada a la función hago lo siguiente:
InsertarSimbolo(nodo, sim);
Me gustaría saber por qué nodo no se modifica y sigue valiendo justo lo mismo que antes de realizar la llamada. Ya no sé que hacer :( Espero que me ayude.
Muchísimas gracias por su tiempo
Saludos

1 respuesta

Respuesta
1
Disculpa el retraso, pero he estado de vacaciones y se me olvidó poner que no estaba disponible.
Aunque pases un puntero, el puntero en sí mismo se pasa por valor, así que cuando haces inicio=p sólo tiene validez local.
Si realmente quieres hacer lo que pone el código que envías sería:
void InsertarSimbolo(tNodoSimb** inicio, tSimb simb){
tNodoSimb * p;
p = malloc(sizeof(tNodoSimb));
p->simbolo = simb;
p->sig = inicio;
*inicio = p;
}
Y la llamada: InsertarSimbolo(&nodo, sim);
Aquí igual me paso de listo, pero si la función tiene que hacer lo que dice, esto es insertar el símbolo, en lugar de sobreescribir el que se le pasa yo la haría así:
void InsertarSimbolo(tNodoSimb* inicio, tSimb simb){
tNodoSimb * p;
p = malloc(sizeof(tNodoSimb));
p->simbolo = simb;
p->sig = inicio->sig;
inicio->sig = p;
}

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas