C++语言程序设计 第五章函数 第五章函数 51函数的定义 52函数的调用 53函数的嵌套调用 54递归函数 55作用城与生命期
C++语言程序设计 第五章 函数 第五章 函数 5.1 函数的定义 5.2 函数的调用 5.3 函数的嵌套调用 5.4 递归函数 5.5 作用域与生命期
C++播言程序设计 第五章函数 5.1函数的定义 51.1函数的定义 一般形式为: 数据类型函数名(形参表) 语句序列; 其中: 1数据类型规定了函数返回值的类型若函数执行后不返回值,数据类型习惯用 void来表示。如果在函数定义时没有数据类型出现,则默认表示函数返回一个整型值。 2.函数名 函数名是一个有效的C++标识符。在C+程序中,除了main函数外,其它的函数名可 用户自行定义。为养成良好的程序设计风格,应给函数命名一个能反映函数功能,有助 于记忆的标识符
C++语言程序设计 第五章 函数 5.1函数的定义 一般形式为: 数据类型 函数名(形参表) { 语句序列; } 其中: 1.数据类型 规定了函数返回值的类型 .若函数执行后不返回值,数据类型习惯用 void 来表示。如果在函数定义时没有数据类型出现,则默认表示函数返回一个整型值。 2.函数名 函数名是一个有效的C++标识符。在C++程序中,除了main函数外,其它的函数名可 用户自行定义。为养成良好的程序设计风格,应给函数命名一个能反映函数功能,有助 于记忆的标识符。 5.1.1函数的定义
C++语言程序设计 第五章函数 3.形参表 形参表,是用逗号隔开的一个变量名说明列表,这些变量称作函数的形参,用于在 函数调用时传送数据。在函数定义中,形参的个数是按函数需要而设定的,也可以 没有形参。对于没有形参的函数,形参表用void表示,此时也可省略形参表,但函 数名之后的一对圆括号不可省略。根据函数定义中有无形参,可将函数分为两类 无参函数与有参函数 每个参数必须同时说明参数类型和参数名,其一般形式为: 数据类型变量名1,数据类型变量名2, 数据类型变量名N 4.函数体 由花括号所括起的语句序列称为函数体。它定义了函数为完成某项功能所要执行的具体 操作。这些操作,既可以用语句来描述,也可以通过调用另一些已定义的函数来实现。也就 是说,函数体中既包含C+中的语句,也可以调用其它函数(main函数除外)。当函数执行结 束需要返回一个值时,在这个函数体中还必须有一个 return语句。 C语言还允许出现函数体为空的函数,称之为空函数。如: empty
C++语言程序设计 第五章 函数 3. 形参表 形参表,是用逗号隔开的一个变量名说明列表,这些变量称作函数的形参,用于在 函数调用时传送数据。在函数定义中,形参的个数是按函数需要而设定的,也可以 没有形参。对于没有形参的函数,形参表用void表示,此时也可省略形参表,但函 数名之后的一对圆括号不可省略。根据函数定义中有无形参,可将函数分为两类: 无参函数与有参函数。 每个参数必须同时说明参数类型和参数名,其一般形式为: 数据类型 变量名1,数据类型 变量名2,.....,数据类型 变量名N 4. 函数体 由花括号所括起的语句序列称为函数体。它定义了函数为完成某项功能所要执行的具体 操作。这些操作,既可以用语句来描述,也可以通过调用另一些已定义的函数来实现。也就 是说,函数体中既包含C++中的语句,也可以调用其它函数(main函数除外)。当函数执行结 束需要返回一个值时,在这个函数体中还必须有一个return语句。 C语言还允许出现函数体为空的函数,称之为空函数。如: empty() { }
C++播言程序设计 第五章函数 512函数原型 C++语言规定:函数名必须先说明后使用。因此,当对一个函数的调用 出现在该函数定义之前时,必须先对函数进行原型说明。 函数原型也称函数模式。C++要求为程序中所有函数构造原型。函数原 型标识一个函数的返回值类型,同时也标识出该函数参数的个数和类型。 为函数构造原型非常简单,在C++程序中,可使用与函数定义中的函数 说明相同的格式来说明一个函数原型。 数据类型函数名(参数类型说明列表); 其中“参数类型说明列表”是用逗号隔开的一个参数类型说明,其参数 个数和指定的类型必须和函数定义中的参数个数和类型一致。由于函数 原型是一条语句,因此函数原型必须以分号结束。函数原型不必包含参 数的名字,可只包含参数的类型
C++语言程序设计 第五章 函数 5.1.2 函数原型 C++语言规定:函数名必须先说明后使用。因此,当对一个函数的调用 出现在该函数定义之前时,必须先对函数进行原型说明。 函数原型也称函数模式。C++要求为程序中所有函数构造原型。函数原 型标识一个函数的返回值类型,同时也标识出该函数参数的个数和类型。 为函数构造原型非常简单,在C++程序中,可使用与函数定义中的函数 说明相同的格式来说明一个函数原型。 数据类型 函数名(参数类型说明列表); 其中“参数类型说明列表”是用逗号隔开的一个参数类型说明,其参数 个数和指定的类型必须和函数定义中的参数个数和类型一致。由于函数 原型是一条语句,因此函数原型必须以分号结束。函数原型不必包含参 数的名字,可只包含参数的类型
C++播言程序设计 第五章函数 52函数的调用 函数调用 函数f 函数h 函数g 「gO ho 函数的嵌套调用
C++语言程序设计 第五章 函数 5.2 函数的调用
C++语言程序设计 第五章函数 52I函数的调用 函数调用一般格式为: 函数名(实参表) 函数调用时提供的参数称为实在参数,简称实参。实参表可包含多个实参,它 们之间用逗号隔开,实参可以是常量、变量,也可以是表达式。实参按它们出现 的顺序、类型及个数要与形参一一对应。 无参函数的调用形式为: 函数名0 其中函数名之后的一对圆括号是不能省略的 按函数调用在程序中的作用,有两种不同类型的应用: 是函数调用只是利用函数所完成的功能。此时,将函数调用作为一个独立的 语句。这种应用不要求函数返回值。 二是函数调用是利用函数的返回值。或用这返回值继续进行表达式的计算,或 输出函数返回值等 比如: w= min(utv, a-b)+ min(c, t)+3.9 cout<< min(u-v, a+b))
C++语言程序设计 第五章 函数 函数调用一般格式为: 函数名(实参表) 函数调用时提供的参数称为实在参数,简称实参。实参表可包含多个实参,它 们之间用逗号隔开,实参可以是常量、变量,也可以是表达式。实参按它们出现 的顺序、类型及个数要与形参一一对应。 无参函数的调用形式为: 函数名() 其中函数名之后的一对圆括号是不能省略的。 按函数调用在程序中的作用,有两种不同类型的应用: 一是函数调用只是利用函数所完成的功能。此时,将函数调用作为一个独立的 语句。这种应用不要求函数返回值。 二是函数调用是利用函数的返回值。或用这返回值继续进行表达式的计算,或 输出函数返回值等。 比如: w = min(u+v, a-b) + min(c, t) + 3.9; cout<< min(u -v, a+b)); 5.2.1 函数的调用
C++语言程序设计 第五章函数 函数调用的执行过程描述如下: (1)为函数的形参分配内存空间; (2)计算实参表达式的值,并将实参表达式的值赋给对应的 形参; (3)执行函数体内的语句序列; (4)函数体执行完,或执行了函数体内的 return语句(若 return语句带表达式,则计算出该表达式的值,并以此值作 为函数值)后,释放为这次函数调用分配的全部内存空间; (5)将函数值(如果有)返回到函数调用处继续执行
C++语言程序设计 第五章 函数 函数调用的执行过程描述如下: (1)为函数的形参分配内存空间; (2)计算实参表达式的值,并将实参表达式的值赋给对应的 形参; (3)执行函数体内的语句序列; (4)函数体执行完,或执行了函数体内的return语句(若 return语句带表达式,则计算出该表达式的值,并以此值作 为函数值)后,释放为这次函数调用分配的全部内存空间; (5)将函数值(如果有)返回到函数调用处继续执行
C++语言程序设计 第五章函数 【例54】计算变量a、b之和。 main #include ()为主调函数,SumO Int sum(int x, int y 为被调用函数。函数调用表 达式sum(a,b)的类型为 Int temp: int烈。在函数调用过程中 temp=x+y, 实参a的值10赋給了形参x, return temp 实參b的值5赋给了形参y,程 void main( 序转去执行函数sUm(中的 第一条语句。 return语旬将 int a bc 求和结果汲回主调函数,汲 a=10:b=5: 回值为15,这个值就是调用 c=sum(a, b); 袁达式的值,可以作为操作数 cout <<c: 在表达式中參与运算(给变 程序运行结果为: 量c赋值)。函数的调用过程 15 如图所示
C++语言程序设计 第五章 函数 【例5.4】计算变量a、b之和。 #include int sum(int x, int y) { int temp; temp = x+y; return temp; } void main( ) { int a, b, c; a = 10; b = 5; c = sum(a,b); cout << c; } 程序运行结果为: 15 main()为主调函数,sum() 为被调用函数。函数调用表 达式sum(a,b)的类型为 int型。在函数调用过程中, 实参a的值10赋给了形参x, 实参b的值5赋给了形参y,程 序转去执行函数sum()中的 第一条语句。return语句将 求和结果返回主调函数,返 回值为15,这个值就是调用 表达式的值,可以作为操作数 在表达式中参与运算(给变 量c赋值)。函数的调用过程 如图所示
C++语言程序设计 第五章函数 void main() a→x,by int sum(int x, int y) int a, b, c; nt temp; a=10;b=5 temp=x+y sum(a, b) return temp; cout << c; 返回15 函数调用过程
C++语言程序设计 第五章 函数 void main( ) { int a, b, c; a = 10; b = 5; c = sum(a,b); cout << c; } int sum(int x, int y) { int temp; temp=x+y; return temp; } a→x,b→y 返回15 函数调用过程
C++播言程序设计 第五章函数 5.2.2参数传递机制 函数调用时,主调函数与被调用函数之间要进行数据传递。在C++中,可以使用两种不 同的参数传递机制来实现。一种称为“传值”(值调用),另一种称为引用调用 【例56】输入两个整数,比较大小,输出较大的数。(求最大值用函数max实现) #include int max( int u, int v) 传 a w=u>v?uv return w b 5 b void main o Int a, b,c cin>>a>>b c-max(a, b) Main函数 max函数 cout<<"a=<<a<<"b=<<b<< end cout << Max is <<c
C++语言程序设计 第五章 函数 5.2.2 参数传递机制 函数调用时,主调函数与被调用函数之间要进行数据传递。在C++中,可以使用两种不 同的参数传递机制来实现。一种称为“传值”(值调用),另一种称为引用调用. 【例5.6】输入两个整数,比较大小,输出较大的数。(求最大值用函数max实现) #include int max ( int u, int v) { 传值 int w; w = u > v ? u:v; return w; } void main ( ) { int a,b,c; cin >> a >> b; c = max(a,b); Main函数 max函数 cout << "a =" << a << "b ="<< b << endl; cout << "Max is " << c; } a b u v 3 5 5 3