Programación General > C/C++

 paso de punteros a funciones

(1/2) > >>

jordi97bcn:
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:
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:
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:
Lo que tambien funciona para modificar el puntero es pasar un puntero a una referencia:

void funcion(char *&p)

Eternal Idol:
haidion: las refererencias, como dijo jordi97bcn solo existen en C++.

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa