| |||
Respuesta: Me pone nervioso !!! Me ha funcionado si pongo: int variable; variable = 1; funcion(&variable); void funcion(int *variable) { variable = 2; } ¿QUÉ SENTIDO TIENE SI NO ES UN PUNTERO? Que lio con los * los & los punteros, las variables normales :( |
| |||
Respuesta: Me pone nervioso !!! es facil en tu segundo ejemplo lo q realmente estas haciendo es obtener la direccion en memoria en la q se encuentra la variable y esa es la q lo k le estas pasando. si lo q quieres es pasar un valor por refererencia deberia estar asi int main() { int var; funcion(var); } void funcion(int &var) { var = 5; } |
| |||
Respuesta: Me pone nervioso !!! Lo hice así pero sale: funcion(int &, int &, int &) cannot be distingued form funcion(int, int, int) ¿Entonces cuando llamas a una funcion, cuando se pone el & en la llamda? tipo funcion(&variable); |
| |||
Respuesta: Me pone nervioso !!! cuando quieres pasar a la funcion una variable por puntero. Pasar un valor por referencia y por puntero es cuando dentro de esa funcion vas a cambiar el valor de dicha variable y quieres que se cambio de valor se vea reflejado en la funcion que invoco a la funcion que recibe una variable por referencia o por valor. La referencia es hasta cierto punto similar a un puntero ya que los dos apuntan a la direccion de memoria de una variable. La diferencia es que a un puntero tu le puedes asignar otra posicion de memoria mientras que a una referencia no. Los puntero es una caracterista que se heredo de C, por otra parte el paso por referencia es algo que surge con C++. Asi que almenos que se extrictamente necesario utiliza la referencia para variables que van a modificarse dentro de una funcion. |
| |||
Respuesta: Me pone nervioso !!! Creo que me aclaro. Entonces yo puedo pasar una variable normal por referencia mediante void funcion(&variable) o si la variable es un puntero tambien cambia su informacion mediante void funcion(int *variable). ¿¿¿Correcto??? Pero entonces esto me hace pensar que siempre que pase un puntero a una funcion, siempre sera por referencia, y nunca por valor. Y si pasas un puntero a una funcion, luego dentro de la funcion cuando la tocas para algo se debe hacer como *variable = 5; o variable = 5¿? Muchas gracias. A ver si termino de aclararme con el valor y referencia en c. Última edición por Zunri; 11/08/2010 a las 01:53 |
| |||
Respuesta: -- no leer -- borrar En pocas palabras: void f(int a) ==> Pasamos la variable por valor´ { a = 10; => no modifica la variable real, solo la local. } Llamada a la funcion: a = 0; f(a); Al volver la variable "a" vale 0 . void f(int *a ) => Pasamos un puntero de la variable { *a = 0; => asi modificamos el valor de la variable } Llamada a la funcion: a = 100; f(&a); Al retornar la variable "a" sera 0; void f(int &a) => pasamos el valor por referencia (tengo entendido que es solo para C++) { a = 10; => modifica el valor de la variable a pasada por referencia. } Llamada a la funcion: a = 0; f(a); Al retornar la variable a es 10. Este metodo no se si es asi correctamente. |
Etiquetas: |