函数与预处理
函数分类
从用户使用的角度看,函数有两种:
(1) 系统函数,即库函数。这是由编译系统提供的,用户 不必自己定义这些函数,可以直接使用它们。
(2) 用户自己定义的函数。用以解决用户的专门需要。 用户在设计程序时,可以将完成某一相对独立功能的程序定义为一 个函数。用户在程序中,根据应用的需要,由用户自己定义函数,
这类函数称为用户自定义的函数
标准函数/库函数
库函数是C++编译系统已预定义的函数,用户根据需要可以 直接使用这类函数。库函数也称为标准函数。
•C++把一些常用函数作为库函数提供给用户,用户可以直 接使用系统提供的库函数:
•数学计算函数(如sqrt()、pow(),fabs(),exp()等, cmath)
•字符串处理函数(string)
•标准输入输出函数等(iostream),
•用户使用任一库函数时,直接使用,不用定义,但在程序 中必须包含相应的头文件。 如 #include等。
从用户使用的角度看,函数有两种:
(1) 系统函数,即库函数。
(2) 用户自己定义的函数。 从函数的形式看,函数分两类:
(1) 无参函数。调用函数时不必给出参数。
(2) 有参函数。在调用函数时,要给出参数。在主调函数 和被调用函数之间有数据传递。
函数参数和函数的值
.1 形式参数和实际参数 在定义函数时函数名后面括号中的变量名称为 形式参数(formal parameter,简称形参)。 形参是被调函数中的变量; 在主调函数中调用一个函数时,函数名后面括 号中的参数(可以是一个表达式)称为实际参数 (actual parameter,简称实参)。 实参是主调函数赋给被调函数的特定值。 实参可以是常量、变量或复杂的表达式,不管是哪 种情况,在调用时实参必须是一个确定的值
说明:
在函数调用前,形参并不占内存的存储单元,只有在函 数开始调用时,形参才被分配内存单元。调用结束后,形 参所占用的内存单元被释放。
2、实参可以是常量、变量或表达式,但要求有确定的值
3、实参变量对形参变量的数据传递是"值传递",即单向传 递,只由实参传给形参,而不能由形参传回来给实参。在 内存中实参、形参分占不同的单元。
实参与形参一一对应,类型应相同或赋值兼容。
说明:
4、不同的函数中可以使用相同的变量名和形参名,他们是 不同的变量。
函数的返回值
函数的返回值通过return语句获得。函数只能有唯一的 返回值。 函数返回值的类型就是函数的类型。 return语句可以是一个表达式,函数先计算表达式后再返 回值。 **return语句还可以终止函数,**并将控制返回到主调函数。 return 语句之后的代码是不能执行的代码。 一个函数中可以有一个以上的return语句,执行到哪一 个return语句,哪一个语句起作用。
函数的调用
函数调用的方式
1. 函数语句 把函数调用单独作为一个语句,并不要求函数带回一个值, 只是要求函数完成一定的操作。printstar();
2. 函数表达式 函数出现在一个表达式中,这时要求函数带回一个确定的 值以参加表达式的运算。如c=2*max(a,b);
3. 函数参数 函数调用作为一个函数的实参
对被调用函数的声明和函数原型
在一个函数中调用另一个函数需要具备条件:
(1) 首先被调用的函数必须是已经存在的函数。
(2) 如果使用库函数,应用#include命令将有关头文件 "包含"到本文件中来。
(3) 如果使用用户自定义的函数,函数调用遵循先定义、 后调用的原则,即 被调函数应出现在主调函数之前; 如果被调用函数出现在主调函数之后,则函数必须在主调函数 之前进行声明。