Function Call
函数调用
如果某个之前未描述的名称出现在表达式中,并且后面跟着左括号,那么它就被视为函数的名称。
function_name (x1, x2,..., xn)参数(形式参数)按值传递,即每个表达式 x1,…, xn 都会被计算,然后该值会被传递给函数。表达式的计算顺序和值的加载顺序并不保证。在执行过程中,系统会检查传递给函数的参数的数量和类型。这种调用函数的方式称为值调用。
函数调用是一个表达式,其值为函数返回的值。上述描述的函数类型必须与返回值的类型相匹配。函数可以在程序的全局范围中声明或描述,即在其他函数之外。函数不能在另一个函数内部声明或描述。
示例:
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);
}在调用带有默认参数的函数时,可以限制要传递的参数列表,但不得早于第一个默认参数。
示例:
void somefunc(double init,
double sec=0.0001, //set default values
int level=10);
//...
somefunc(); // Wrong call. The first parameter must be presented.
somefunc(3.14); // Correct call
somefunc(3.14,0.0002); // Correct call
somefunc(3.14,0.0002,10); // Correct call
调用函数时,不能跳过参数,即使是那些具有默认值的参数:
somefunc(3.14, , 10); // Wrong call -> the second parameter was skipped.
在程序中不同执行上下文中使用同名的多个函数可能会导致歧义。为了避免函数调用的歧义性,始终需要使用作用域解析操作明确指定函数的作用域。
另请参阅
最后更新于