1. 基本知识
使用 C++ 函数,必须完成以下工作:
- 提供函数定义
- 提供函数原型
- 调用函数
库函数是已经定义和编译好的函数,同时可以使用标准库头文件提供其原型,因此只需正确地调用这种函数即可。
1. 1 定义函数
可以将函数分成两类:没有返回值的函数和有返回值的函数。没有返回值的函数被称为 void 函数,其通用格式如下:
void functionName (parameterList)
{
statement(s)
return;
}
其中 parameterList 指定了传递给函数的参数类型和数量,可选的返回语句标记了函数的结尾。
有返回值的函数将生成一个值,并将它返回给调用函数。这种函数的类型被声明为返回值的类型,其通用格式如下:
typeName functionName (parameterList)
{
statement(s)
return value;
}
C++ 对于返回值的类型有一定的限制:不能是数组,但可以使其他类型——整型、浮点型、指针,甚至可以使结构和对象(C++ 函数不能直接返回数组,但可以将数组作为结构或对象组成部分类返回。
函数在执行返回语句后结束。如果函数包含多条返回语句(例如,它们位于不同的 if else 选项中),则函数在执行遇到的第一条返回语句后结束。
1. 2 函数原型和调用
原型描述了函数到编译器的接口,也就是说,它将函数返回值的类型以及参数的类型和数量告诉编译器。
C++ 允许将一个程序放在多个文件中,单独编译这些文件,然后将它们组合起来。在这种情况下,编译器在编译 main() 时,可能无权访问函数代码。如果函数位于库中,情况也将如此。避免使用函数原型的唯一方法是,在首次使用函数之前定义它,但这并不总是可行的。另外,C++ 的变成风格是将 main() 放在最前面,因为它通常提供了程序的整体结构。
原型确保以下几点:
- 编译器正确处理函数返回值
- 编译器检查使用的参数数目是否正确
- 编译器检车使用的参数类型是否正确,如果不正确则转换为正确的类型
2. 函数参数和按值传递
C++ 通过长安之传递参数,这意味着将数值参数传递给函数,而后者将其赋给一个新的变量。用于接受传递值的参量被称为形参,传递给函数的值被称为实参。出于简化的目的,C++ 标准使用参数(argument)来表示实参,使用参量(parameter)来表示形参,因此参数传递将参数赋给参量。
在函数中声明的变量(包括参数)是该函数私有的。在函数被调用的时候,计算机姜维这些变量分配内存;在函数结束时,计算机将释放这些变量使用的内存。这样的变量被称为局部变量,因为它们被限制在函数中。
3. 函数和数组
函数头: