Paso por valor o por referencia

De Recursos Educativos
Revisión del 17:14 12 mar 2018 de Lantolin (discusión | contribs.)
(difs.) ← Revisión anterior | Revisión actual (difs.) | Revisión siguiente → (difs.)
Ir a la navegación Ir a la búsqueda

Pequeña referencia que me ayuda cuando cambio con frecuencia de lenguaje.

Lenguaje Paso dew argumentos Operador "referencia" Operador "de-referencia"
C/C++ Por valor & *
Perl Por valor \ $
Java Por referencia - -
Javascript Por referencia - -
Ruby Por referencia - -

Mas detalles del paso por-referencia

Para ser exactos, cuando decimos "Por referencia", lo que ocurre en realidad es que se pasa por valor la referencia a un objeto.

Dicho de otro modo si yo tengo la variable a y la paso a la funcion f(param), dentro de f lo que tengo en param es una copia del puntero al contenido de a.

Por tanto, dentro de f, cuando cambio el contenido de param los efectos se verán fuera de la función. Pero si cambio el valor de param mismo, el cambio no se ve fuera de f ya que param era una copia de a.

Ejemplo de lo anterior:

function f(param)
{
  param.p = "2";
  var b = {};
  b.p = "3";
  param = b;
}

var a = {};
a.p = "1";
f(a);

La función f puede cambiar el contenido apuntado por a. Pero nunca a en si, porque yo manejo a que es una copia por valor de a. Por tanto, al final de este programa a.p valdrá 2, no 3.