Parámetros formales

Los parámetros pasados a la función son locales. Su zona de visibilidad es el bloque de la función. Los parámetros formales tienen que tener nombres distintos que las variables externas y variables locales definidas dentro de la función. En el bloque de la función a los parámetros formales se les puede asignar algunos valores. Si el parámetro formal está declarado con el modificador const, su valor no se puede cambiar dentro de la función.

Ejemplo:

void func(const int & x[], double y, bool z)
  {
   if(y>0.0 && !z)
      Print(x[0]);
   ...
  }

Los parámetros formales pueden ser inicializados por las constantes. En este caso, el valor inicializado se considera como el valor por defecto. Los parámetros que siguen después del parámetros inicializado también tienen que ser inicializado.

Ejemplo:

void func(int x, double y = 0.0, bool z = true)
  {
   ...
  }

Cuando se llama una función como esa, se puede omitir los parámetros inicializados, a su vez serán puestos los valores por defecto.

Ejemplo:

func(1230.5);

 

Los parámetros de tipos simples se traspasan por valor, es decir, los cambios de la correspondiente variable local de este tipo dentro de la función llamada no se reflejará de ninguna manera en la función llamadora. Los arrays de cualquier tipo y los datos del tipo de estructuras siempre se pasan por referencia. Si es preciso prohibir el cambio del array o el contenido de la estructura, los parámetros de estos tipos tienen que declararse con la palabra clave const.

También existe la posibilidad de pasar por referencia los parámetros de tipos simples. En este caso, la modificación de estos parámetros se reflejará en las correspondientes variables en la función llamada, que han sido pasadas por referencia. Para especificar que un parámetro se pasa por referencia, después del tipo de datos hay que poner el modificador &.

Ejemplo:

void func(int& x, double& y, double & z[])
  {
   double calculated_tp;
   ...
   for(int i=0; i<OrdersTotal(); i++)
     {
      if(i==ArraySize(z))       break;
      if(OrderSelect(i)==falsebreak;
      z[i]=OrderOpenPrice();
     }
   x=i;
   y=calculated_tp;
  }

No se puede inicializar los parámetros pasados por referencia con valores por defecto.

No se puede pasar a la función más de 64 parámetros.

Véase también

Variables Input, Tipos de datos, Encapsulación y extensión de tipos, Inicialización de variables, Visibilidad y tiempo de vida de variables, Creación y eliminación de objetos