Llamada a una función

Si un nombre que no ha sido descrito antes aparece en la expresión y le sigue el paréntesis izquierdo, entonces según el contexto éste se considera el nombre de una función.

nombre_de_función (x1, x2,..., xn)

 

Los argumentos (parámetros formales) se traspasan por valor, es decir, cada expresión x1, . . . , xn se calcula, y su valor es pasado a la función. El orden del cálculo de expresión y el orden de la carga de valores no se garantizan. Durante la ejecución se realiza el chequeo del número y el tipo de argumentos pasados a la función. Este modo de dirigirse a una función se llama la llamada por valor.

La llamada a una función es una expresión cuyo valor es el valor devuelto por la función. El tipo de función descrito tiene que corresponder al tipo del valor devuelto. La función puede ser declarada o descrita en cualquier parte del programa a nivel global, es decir, fuera de otras funciones. Una función no puede ser declarada o descrita dentro de otra función.

Ejemplos:

int start()
  {
   double some_array[4]={0.3, 1.4, 2.5, 3.6};
   double a=linfunc(some_array, 10.5, 8);
   //...
  }
double linfunc(double x[], double a, double b)
  {
   return (a*x[0] + b);
  }

Al invocar una función que tiene los parámetros predefinidos, la lista de parámetros pasados puede ser limitada, pero no antes del primer parámetro predefinido.

Ejemplos:

void somefunc(double init,
              double sec=0.0001, //los valores por defecto están definidos
              int level=10);  
//...
somefunc();                      // llamada errónea. tiene que haber el primer parámetro obligatorio.
somefunc(3.14);                  // llamada correcta
somefunc(3.14,0.0002);           // llamada correcta
somefunc(3.14,0.0002,10);        // llamada correcta

Al llamar a una función, no se puede omitir los parámetros, aunque éstos tengan los valores predefinidos:

somefunc(3.14, , 10);           // llamada errónea -> el segundo parámetro está omitido.

Véase también

Sobrecarga, Funciones virtuales, Polimorfismo