C/Visual C - No entiendo por qué funciona así el pasar un puntero por referencia

 
Vista:
sin imagen de perfil
Val: 1
Ha disminuido su posición en 30 puestos en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

No entiendo por qué funciona así el pasar un puntero por referencia

Publicado por Valery (1 intervención) el 05/12/2019 01:50:01
Hola a todos, tengo un error conceptual aquí:

Tengo la función

1
2
3
4
void Escribe_DCRAM4b(char *fra, char anim)
{
    Mensaje_Ent(*fra);
}

So paso el puntero (es un string) de esa manera a la función
1
Mensaje_Ent( )
imprime basura

Pero si paso el puntero de la siguiente manera

1
2
3
4
void Escribe_DCRAM4b(char *fra, char anim)
{
    Mensaje_Ent(fra);
}

Entonces si imprime el mensaje correcto.

La función Mensaje_Ent( ) es como sigue:


1
2
3
4
5
6
7
8
void Mensaje_Ent(char *mensaje)
{
    while (*mensaje)
    {
        Envia_Com_Ram4b(*(mensaje++));
        retardo_us(40);
    }
}

Se que de la segunda manera le estoy pasando a la función Mensaje_Ent( ) la dirección del primer elemento del string pero llegué a pensar que si pasaba el puntero de la primera manera simplemente estaba copiando el string de una función a otra más interna.

¿Por qué sucede lo de la impresión de basura?, lo único que se me ocurre es que la función interna está tomando el contenido del puntero como una dirección pero no logro encontrar referencia alguna a ello.

Gracias de antemano por la ayuda brindada.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

No entiendo por qué funciona así el pasar un puntero por referencia

Publicado por Tom (619 intervenciones) el 05/12/2019 09:20:36
Sí, tienes un problema de concepto. El puntero no lo pasas por referencia. El puntero lo pasas por valor.
Además, probablemente tu compilador te está mostrando un montón de warnings cuando lo haces mal. Hazles caso a los mensajes.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar