B.7 函数
本节总结了函数的语法及运算。
B.7.1 函数定义
一般格式:
returnType name(type1 param1,type2 param2,..)
{
variableDeclarations
programStatement
programStatement
……
return expression;
}
以上定义了一个名为name的函数,它返回一个returnType类型的值,并声明其形参param1、param2……,使param1为type1类型、param2为type2类型,等等。
通常,本地变量在函数的开始部分声明,但这并不是必需的。它们可以在函数的任何位置声明,在这种情况下,只有在声明之后出现的语句才能访问它们。
如果函数不返回值,则将returnType指定为void。
如果圆括号中只指定了void,则函数不会接受参数。如果将……作为参数列表的最后(或者惟一)一个参数,则函数将接受参数的变量成员,如下所示:
int printf(char*format,……)
{
……
}
声明一维数组的参数时,无需在数组中指定元素的个数。而声明多维数组时,除第一维以外,必须指定每一维的大小。
有关return语句的讨论,请参见“return语句”一节。
对于函数定义,Objecticve-C语言还支持以前使用的方法。其一般格式为:
returnType name(param1,param2,..)
param_declarations
{
variableDeclarations
programStatement
programStatement
……
return expression;
}
这里,圆括号内只列出各个参数名。如果不接收参数,左右圆括号之间就不要出现任何内容。每个参数的类型要在函数外部进行声明,而且要在函数定义的左花括号之前声明。例如:
unsigned int rotate(value, n)
unsigned int value;
int n;
{
……
}
定义了一个名为rotate的函数,这个函数接受名为value和n的两个参数。第一个参数的类型为unsigned int,第二个参数的类型为int。
关键字inline可以作为对编译器的提示而放在函数定义之前。某些编译器使用函数本身的实际代码来代替函数调用,并因此加快了执行速度。下面展示一个例子:
inline int min(int a, int b)
{
return(a<b?a:b);
}