每个任务都可以划分为不同的子任务,每个子任务都可以直接用代码的形式表示,还可以划分为更小的子任务。这种方法叫做逐步细化。函数用于编写要解决的子任务代码。描述函数行为的代码称为函数定义:
function_header
{
....指令
}
在第一个大括号之前的都是函数定义的头部,而在大括号内的是函数定义的主体文件。函数头部包含了该函数要返回的值的类型、名称(标识符)和形式参数及描述。传递给函数的形式参数的数量是有限的,不可超过64个。
可以从程序的其他部分调用该函数,次数视需要而定。可以看出,返回类型、函数标识符和参数及类型构成了函数原型。
函数原型是函数的声明,而不是它的定义。由于返回类型的显式声明和参数类型列表,在函数调用期间可以进行严格的类型检查和隐式类型映射。在类中经常使用函数声明来提高代码的可读性。
函数定义必须与其声明完全匹配。必须定义每个声明的函数。
例子:
double //返回值类型
linfunc (double a, double b) //函数名和参数列表
{
.... / / 混合运行
return(a + b); / /返回值
}
return操作符 可以返回位于该操作符中的表达式的值。如果需要,表达式值将转换为函数结果类型。可以返回的内容有: 简单的类型、简单的结构、对象指针。仅使用返回操作符,将不返回任何数组、类对象、复合结构类型的变量。
.
一个函数不返回任何值应该使用用void类型。
例子:
void errmesg(string s)
{
Print(“错误:”+ s);
}
传递给函数的参数可以具有默认值,哪个被确定依赖于类型的常量。
例子:
int somefunc(
Double d = 0.0001,
int n = 5,
bool b = true,
string s =“传递字符串”)
{
print("Required parameter a = ",a);
print("传递以下参数: d = ",d," n = ",n," b = ",b," s = ",s);
return(0);
}
如果前方任何参数有默认值,所有后续的参数也必须有默认值。
错误的例子:
int somefunc(
double d=0.0001, // 声明默认值0.0001 (前一个变量有默认)
int n, // 默认值未指定 ! (而后续的没有!)
bool b, //默认值未指定!
string s="passed string")
{.......
网友评论