第4章函数 4.1函数的定义和使用 4.2函数的参数传递 4.3函数的嵌套调用 44函数的递归调用 4.5内联函数 4.6函数重载 4.7带默认形参值的函数 4.8函数的存储类别
第4章 函数 4.1 函数的定义和使用 4.2 函数的参数传递 4.3 函数的嵌套调用 4.4 函数的递归调用 4.5 内联函数 4.6 函数重载 4.7 带默认形参值的函数 4.8 函数的存储类别
第4章函数 4.1函数的定义与使用 系统库函数:需要包含相应的头文件,如# nclude< math . h 系统所提供的库函数都是完成一些通用功能的函数,在实际 的程序设计中,自己还需要编写大量完成特殊功能的函数,我们 称之为用户自定义函数 4.1.1函数的定义 函数定义的一般格式为: 函数类型函数名(形式参数表) 函数头 语句组 函数体
4.1 函数的定义与使用 系统库函数:需要包含相应的头文件,如 #include 系统所提供的库函数都是完成一些通用功能的函数,在实际 的程序设计中,自己还需要编写大量完成特殊功能的函数,我们 称之为用户自定义函数。 4.1.1 函数的定义 函数定义的一般格式为: 函数类型 函数名( 形式参数表) { 语句组 } 第4章 函数 函数头 函数体
第4章函数 例41求两个整数中较大的值的函数 #include int max(int x, int y); void maino 1主调函数 int a, b. c: cout>a>> b C= max(a, b) 函数调用语句 cout<<"a,b中较大的数是:"<<c<<endl; int max(int x, int y)- 被调函数 if(xy m=X else m=y return m 程序运行结果为: 请输入两个整数,用空格分隔:2030 a,b中较大的数是:30
例4.1 求两个整数中较大的值的函数 #include int max(int x, int y); void main() { int a,b,c; cout > a >> b; c = max(a,b); cout y) m=x; else m=y; return m; } 程序运行结果为: 请输入两个整数,用空格分隔:20 30 a,b中较大的数是:30 第4章 函数 函数调用语句 主调函数 被调函数
第4章函数 4.1函数的定义与使用 4.1.1函数的定义(续一) 1.函数类型与返回值 函数的类型就是函数返回值的类型,可以是C++中的任何数据 类型。 函数的返回值由函数体中的 return语句给出。 return语句的一般格式为 return(表达式);执行该语句时,不带回返回 或 return表达式; 值,只是返回主调函数 或 return 函数的类型要与reun语句的返回值类型相同。若不一致则以 函数类型为准,将返回值类型转换为函数类型,若不能转换,则 编译过程会出错! 若函数不需要返回值,则应将类型指定为void
4.1 函数的定义与使用 4.1.1 函数的定义(续一) 1. 函数类型与返回值 函数的类型就是函数返回值的类型,可以是C++中的任何数据 类型。 函数的返回值由函数体中的return语句给出。 return语句的一般格式为: return (表达式); 或 return 表达式; 或 return ; 函数的类型要与return语句的返回值类型相同。若不一致则以 函数类型为准,将返回值类型转换为函数类型,若不能转换,则 编译过程会出错! 若函数不需要返回值,则应将类型指定为void。 第4章 函数 执行该语句时,不带回返回 值,只是返回主调函数
第4章函数 4.1函数的定义与使用 41.1函数的定义(续二 2.函数的参数 函数通过参数接收数据。 函数头中的参数为形式参数(或形参),在函数调用时给出 的参数称为实际参数(或实参)。 实参必须是一个实际的值,而形参只有在发生实际调用时才 有具体的值。 如果不需要为函数提供数据,则可以没有参数,称之为无参 函数
4.1 函数的定义与使用 4.1.1 函数的定义(续二) 2. 函数的参数 函数通过参数接收数据。 函数头中的参数为形式参数(或形参),在函数调用时给出 的参数称为实际参数(或实参)。 实参必须是一个实际的值,而形参只有在发生实际调用时才 有具体的值。 如果不需要为函数提供数据,则可以没有参数,称之为无参 函数。 第4章 函数
第4章函数 4.1函数的定义与使用 412函数的声明与调用 函数调用的一般格式: 函数名(实际参数表) 注意:若无形参,也不必给出实参,但括号不能省略。 实参与形参个数应一致,类型要一一对应 函数原型声明:在调用函数前,对函数进行说明。通常用于 函数定义出现在函数调用之后的情况。 函数原型声明的一般格式: 丽数类型数名(形式参数表 H: double power(double, int)
4.1 函数的定义与使用 4.1.2 函数的声明与调用 函数调用的一般格式: 函数名(实际参数表) 注意:若无形参,也不必给出实参,但括号不能省略。 实参与形参个数应一致,类型要一一对应。 函数原型声明:在调用函数前,对函数进行说明。通常用于 函数定义出现在函数调用之后的情况。 函数原型声明的一般格式: 函数类型 函数名(形式参数表); 注意:函数原型中可以不写出参数名。 如:double power(double, int); 第4章 函数
第4章函数 」例42编写一个求x的n次方的函数 Include double power(double x, int n; void maino double x int n, cout>X>>n; cout<x<"的"<n<"次方是:"<< power(x,n) endi: double power(double x, int n) double a= 1.0 程序运行结果为: int i. 请输入X和N的值,用空格分隔:3.04 for(i=1;i=n;++)3的4次方是:81 a-x, return a 返回
例4.2 编写一个求x的n次方的函数 #include double power(double x, int n); void main() { double x; int n; cout > x >> n; cout << x << "的" << n << "次方是:" << power(x,n) << endl; } double power(double x, int n) { double a = 1.0; int i; for(i=1; i<=n; i++) a *= x; return a; } 程序运行结果为: 请输入X和N的值,用空格分隔:3.0 4 3的4次方是:81 第4章 函数 返 回
第4章函数 4.2函数的参数传递 根据函数的功能,函数的形参可以选择为数值、引用或指针 种形式。 42.1值传递 C+中参数的传递是单向的,即只能将实参的值传递给形参 而形参值的改变对实参没有影响 例43写一个函数交换主函数中两个变量的值 考虑:使用值传递,将需要交换的变量作为实参传递给函数 的形参,在函数体中完成交换值的过程,这种做法能否实现程序 要求?
4.2 函数的参数传递 根据函数的功能,函数的形参可以选择为数值、引用或指针 三种形式。 4.2.1 值传递 C++中参数的传递是单向的,即只能将实参的值传递给形参, 而形参值的改变对实参没有影响。 例4.3 写一个函数交换主函数中两个变量的值 考虑:使用值传递,将需要交换的变量作为实参传递给函数 的形参,在函数体中完成交换值的过程,这种做法能否实现程序 要求? 第4章 函数
第4章函数 例4.3源程序 include void swap(int x, int y) void swap(intx, int y) void maino int temp temp= x; int a, b: X=y, a=10; y= temp b=20 swap( a, b cout<<a<","<b<end;程序运行结果为: 10,20 20b temp temp emp 20y 20yx2020y 2010y 注意:值传递时,函数的实参与形参在内存中占用不同的存储空间,值只能由 实参传递给形参,而形参的变化并不会影响实参。因此不能完成程序功能
例4.3 源程序 #include void swap(int x, int y); void main() { int a, b; a = 10; b = 20; swap(a, b); cout << a << ", " << b << endl; } 程序运行结果为: 10,20 a 10 x 10 20 b 20 y x 10 20 y temp 10 x 20 20 y temp 10 x 20 10 y temp 10 void swap(int x, int y) { int temp; temp = x; x = y; y = temp; } 第4章 函数 注意:值传递时,函数的实参与形参在内存中占用不同的存储空间,值只能由 实参传递给形参,而形参的变化并不会影响实参。因此不能完成程序功能
第4章函数 4.2函数的参数传递 422使用引用 1.引用的概念 引用是一种特殊的变量,可以认为是一个变量的别名。 定义引用的一般格式: 类型说明符&引用名=变量名; 如:inta=1; int &b= a: 首先定义变量a,并初始化为1,然后定义引用b,并初始化为a, 即b是a的别名,因此a和b是同一个单元。 注意:定义引用时一定要初始化,指明该引用变量是谁的别名
4.2 函数的参数传递 4.2.2 使用引用 1. 引用的概念 引用是一种特殊的变量,可以认为是一个变量的别名。 定义引用的一般格式: 类型说明符 &引用名 = 变量名; 如: int a = 1; int &b = a; 首先定义变量a,并初始化为1,然后定义引用b,并初始化为a, 即b是a的别名,因此a和b是同一个单元。 注意:定义引用时一定要初始化,指明该引用变量是谁的别名。 第4章 函数