• Domingo 15 de Diciembre de 2024, 09:41

Autor Tema:  paso de punteros a funciones  (Leído 2169 veces)

jordi97bcn

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
paso de punteros a funciones
« en: Viernes 17 de Julio de 2009, 16:51 »
0
Hola a todos, y antes de nada gracias por leer mi mensaje.

tengo una dudilla... Cuando pasas un puntero una función como parámetro, de esta manera:

char *p
......
.....
cambiar(p)
....

void cambiar (char *p)
{
....
}

internamente, en el método cambiar, se puede modificar el contenido de *p (es decir, el "valor" de la variable a la que apunta) pero NO la dirección a la que apunta p?

No sé si me explico, sé que suena un poco enrevesado. Reformulando la pregunta, ¿se puede cambiar desde dentro de un método, a dónde apunta un puntero, si ese puntero se recibe como parámetro? o solo se puede cambiar su "contenido"?

gracias de nuevo, y saludos!

haidion

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Re: paso de punteros a funciones
« Respuesta #1 en: Viernes 17 de Julio de 2009, 17:09 »
0
Yo te diria que solo se puede cambiar el contenido por que en realidad estas pasando una copia del puntero a la funcion y no el puntero en si.

jordi97bcn

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: paso de punteros a funciones
« Respuesta #2 en: Viernes 17 de Julio de 2009, 17:52 »
0
Es verdad, creo que acabo de comprobarlo... De lo que se deduce que en C, no existe el paso por referencia. Lo unico que se puede hacer para emular esto es usar punteros (cuando solo queremos cambiar el contenido) y dobles punteros (cuando queremos cambiar a dónde apunta el puntero)

uff me ha costado dios y ayuda entenderlo (aunque el codigo resultante parece chino, jejeje)

gracias y un saludo! :good:

haidion

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Re: paso de punteros a funciones
« Respuesta #3 en: Viernes 17 de Julio de 2009, 18:38 »
0
Lo que tambien funciona para modificar el puntero es pasar un puntero a una referencia:

void funcion(char *&p)

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: paso de punteros a funciones
« Respuesta #4 en: Viernes 17 de Julio de 2009, 23:21 »
0
haidion: las refererencias, como dijo jordi97bcn solo existen en C++.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

haidion

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Re: paso de punteros a funciones
« Respuesta #5 en: Lunes 20 de Julio de 2009, 14:51 »
0
Gracias por aclararmelo

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: paso de punteros a funciones
« Respuesta #6 en: Jueves 23 de Julio de 2009, 12:49 »
0
Cita de: "jordi97bcn"
De lo que se deduce que en C, no existe el paso por referencia.
:huh: Es que el paso por referencia es precisamente eso: pasar el puntero (una referencia), no el valor en sí. De ahí "por referencia" y "por valor". Este tipo de paso de parámetros creo recordar que lo introdujo el lenguaje Pascal, y C lo usó más tarde.