c4函数[2]
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
17
函 数 的 参 数 传 递 机 制
函数的参数传递
• 引用 引用(&)是变量的别名 例如 是变量的别名,例如 是变量的别名 例如:
无法显示图像。计算机可能没有足够的内存以打开该图像,也可 能是该图像已损坏。请重新启动计算机,然后重新打开该文件。 如果仍然显示红色“x” ,则可能需要删除该图像,然后重新将其插 入。
无法显示图像。计算机可能没有足够的内存以打开该图像,也可 能是该图像已损坏。请重新启动计算机,然后重新打开该文件。 如果仍然显示红色“x” ,则可能需要删除该图像,然后重新将其插 入。
C++程序设计 C++程序设计
第4章 函数和作用域 章
西南科技大学经管学院 李宇翔
无法显示图像。计算机可能没有足够的内存以打开该图像,也可 能是该图像已损坏。请重新启动计算机,然后重新打开该文件。 如果仍然显示红色“x” ,则可能需要删除该图像,然后重新将其插 入。
空瓶C 空瓶
14
无法显示图像。计算机可能没有足够的内存以打开该图像,也可 能是该图像已损坏。请重新启动计算机,然后重新打开该文件。 如果仍然显示红色“x” ,则可能需要删除该图像,然后重新将其插 入。
#include<iostream.h> void Swap(int a, int b); int main( ) ( { int x(5), y(10); cout<<"x="<<x<<" y="<<y<<endl; Swap(x,y); cout<<"x="<<x<<" y="<<y<<endl; return 0; }
被调用函数名(含类型说明的形参表) 类型标识符 被调用函数名(含类型说明的形参表);
如: int power(int a,int b);
• 使用系统提供的标准函数时,要将含有该函 使用系统提供的标准函数时, 数原型的头文件用#include命令包含到文件 数原型的头文件用 命令包含到文件 首部。 首部。
19
void Swap(int& a, int& b) { int t; t=a; x 10 5 a=b; a b=t; }
10
无法显示图像。计算机可能没有足够的内存以打开该图像,也可 能是该图像已损坏。请重新启动计算机,然后重新打开该文件。 如果仍然显示红色“x” ,则可能需要删除该图像,然后重新将其插 入。
课堂练习
• 编写一个函数求数的绝对值 并由主函数 编写一个函数求数的绝对值,并由主函数 调用。 调用。
double abs(double x) { double y; y=x>0?x:-x; return y; }
2
无法显示图像。计算机可能没有足够的内存以打开该图像,也可 能是该图像已损坏。请重新启动计算机,然后重新打开该文件。 如果仍然显示红色“x” ,则可能需要删除该图像,然后重新将其插 入。
函 数 的
函数的定义
定 • 函数是面向对象程序设计中的基本抽象 单元, 义 单元,是对功能的抽象 与 • 函数定义的语法形式 调 函数名(形式参数表) 类型标识符 函数名(形式参数表) 若无参数, 若无参数,写void { 用
3函数的定义?函数是面向对象程序设计中的基本抽象单元是对功能的抽象函数是面向对象程序设计中的基本抽象单元是对功能的抽象?函数定义的语法形式类型标识符函数名形式参数表语句序列函数的定义与调用若无参数写void是被初始化的内部变量寿命和可见性仅限于函数内部若无返回值写是被初始化的内部变量寿命和可见性仅限于函数内部若无返回值写void4函数的定义?形式参数表类型1参数名1类型2参数名2
语句序列 } 若无返回值, 若无返回值,写void
3
是被初始化的内部 变量, 变量,寿命和可见 性仅限于函数内部
无法显示图像。计算机可能没有足够的内存以打开该图像,也可 能是该图像已损坏。请重新启动计算机,然后重新打开该文件。 如果仍然显示红色“x” ,则可能需要删除该图像,然后重新将其插 入。
函 数 的 定 义 与 调 用
ex1.h bool ss(int m);
ex1.cpp #include“ex1.h" #include ex1.h"
编 译 ss.obj ex1.obj
编
译
连
接
可执行程序ex1.exe 可执行程序ex1.exe
多文件组织结构图
9
无法显示图像。计算机可能没有足够的内存以打开该图像,也可 能是该图像已损坏。请重新启动计算机,然后重新打开该文件。 如果仍然显示红色“x” ,则可能需要删除该图像,然后重新将其插 入。
函 数 的 声 明 与 调 用
例4-2
判断整数x是否仅由奇数字组成。 判断整数 是否仅由奇数字组成。 是否仅由奇数字组成 分析: 分析: 编写具有如下原型的函数: 编写具有如下原型的函数: bool allOddNum(int x); 其功能是:若整数x仅由奇数字(1、 其功能是:若整数 仅由奇数字( 、 仅由奇数字 3、5、7、9)组成时,函数返回 、 、 、 )组成时, true ,否则返回 否则返回false。并编写主函数, 否则返回 。并编写主函数, 对它进行调用。 对它进行调用。
函数的定义
• 形式参数表 <类型 参数名 类型 参数名 ..., 类型1>参数名 类型2>参数名 类型 参数名1,<类型 参数名2, <类型 参数名n <类型n>参数名n 类型n>参数名 • 函数的返回值
– 由 return 语句给出,例如: 语句给出,例如: return 0 – 无返回值的函数(void类型),不必写 无返回值的函数( 类型), 类型),不必写 return语句。 语句。 语句
#include<iostream.h> void Swap(int& a, int& b); int main( ) ( { int x(5), y(10); cout<<"x="<<x<<" y="<<y<<endl; Swap(x,y); cout<<"x="<<x<<" y="<<y<<endl; return 0; }
5
无法显示图像。计算机可能没有足够的内存以打开该图像,也可 能是该图像已损坏。请重新启动计算机,然后重新打开该文件。 如果仍然显示红色“x” ,则可能需要删除该图像,然后重新将其插 入。
函 数 的 函 数 原 型 与 调 用
6
函数的调用
• 调用形式
函数名(实参列表) 函数名(实参列表)
• 嵌套调用
——用引用做形参 用引用做形参
int i,j; int &ri=i; //建立一个int型的引用ri,并将其 建立一个int型的引用ri, //建立一个int型的引用ri,并将其 //初始化为变量 初始化为变量i //初始化为变量i的一个别名 j=10; ri=j;//相当于 i=j; 相当于
•引用有三种用途:作形参、作为函数的返回 引用有三种用途:作形参、 引用有三种用途 值和独立引用,主要还是前两种。 值和独立引用,主要还是前两种。 • 引用作为形参,称为引用调用。 引用作为形参,称为引用调用。 void swap(int& a, int& b) {...}
函 数 的 参 数 传 用引用做形参
#include<iostream.h> void Swap(int &a, int &b); int main( ) ( { int x(5), y(10); cout<<"x="<<x<<" y="<<y<<endl; Swap(x,y); cout<<"x="<<x<<" y="<<y<<endl; return 0; }
13
无法显示图像。计算机可能没有足够的内存以打开该图像,也可 能是该图像已损坏。请重新启动计算机,然后重新打开该文件。 如果仍然显示红色“x” ,则可能需要删除该图像,然后重新将其插 入。
函 数 的 参 数 传 递 机 制
A B C
例4-3输入两整数交换后输出
C A B
C=A 醋A A=B B=C 酱油B 酱油
函 数 的 函 数 原 型 与 调 用
函数原型与头文件
• 在具有多个文件的应用系统中,程序文件中 在具有多个文件的应用系统中, 定义的函数原型一般都放在一个头文件中。 定义的函数原型一般都放在一个头文件中。 • 头文件不仅仅用来保存系统标准函数的原型, 头文件不仅仅用来保存系统标准函数的原型, 也保存我们自己定义的函数原型。 也保存我们自己定义的函数原型。
a
5
b
3
被调函数: 被调函数: int power(int a, int b)
12
无法显示图像。计算机可能没有足够的内存以打开该图像,也可 能是该图像已损坏。请重新启动计算机,然后重新打开该文件。 如果仍然显示红色“x” ,则可能需要删除该图像,然后重新将其插 入。
函数的参数传递机制
——传递参数值 传递参数值 • 在函数被调用时才分配形参的存储单元。 在函数被调用时才分配形参的存储单元。 • 实参可以是常量、变量或表达式。 实参可以是常量、变量或表达式。 • 实参类型必须与形参相符。 实参类型必须与形参相符。 • 传递时是传递参数值,即单向传递。 传递时是传递参数值,即单向传递。
函 数 的 声 明 与 调 用 【例4-1】 】 编写一个函数可用来判断任给的 一个正整数是否为素数(或质数 或质数)。 一个正整数是否为素数 或质数 。 再编写主程序完成输入、 再编写主程序完成输入、调用和 输出。 输出。
7
无法显示图像。计算机可能没有足够的内存以打开该图像,也可 能是该图像已损坏。请重新启动计算机,然后重新打开该文件。 如果仍然显示红色“x” ,则可能需要删除该图像,然后重新将其插 入。
问题的提出
• 求 a b + x y 的值。 的值。 • 步骤: 步骤:
– – – – 从键盘输入a、b、x、y的值 从键盘输入 、 、 、 的值 b a 和 y 的值 分别求 求和 输出结果
x
思路:对于重复的代码可重用, 思路:对于重复的代码可重用,即将可重用代 码独立出来,单独作为一个函数。 码独立出来,单独作为一个函数。
4
无法显示图像。计算机可能没有足够的内存以打开该图像,也可 能是该图像已损坏。请重新启动计算机,然后重新打开该文件。 如果仍然显示红色“x” ,则可能需要删除该图像,然后重新将其插 入。
函 数 的 函 数 原 型 与 调 用
函数原型与头文件
• 编译系统在处理函数调用时,必须从程序中 编译系统在处理函数调用时, 获得完成函数调用所必需的信息,因此在调 获得完成函数调用所必需的信息,因此在调 用函数前必须进行函数原型说明 必须进行函数原型说明。 用函数前必须进行函数原型说明。 • 说明函数原型: 说明函数原型 函数原型: 在程序文件开头所有函数之前, 在程序文件开头所有函数之前,按如下形 式说明: 式说明:
– 函数不允许嵌套声明,但可以嵌套调用。 函数不允许嵌套声明,但可以嵌套调用。
• 递归调用
– 函数直接或间接调用自身。 函数直接或间接调用自身。
无法显示图像。计算机可能没有足够的内存以打开该图像,也可 能是该图像已损坏。请重新启动计算机,然后重新打开该文件。 如果仍然显示红色“x” ,则可能需要删除该图像,然后重新将其插 入。
8
函数的实现文件
函数的声明文件
主函数文件
无法显示图像。计算机可能没有足够的内存以打开该图像,也可 能是该图像已损坏。请重新启动计算机,然后重新打开该文件。 如果仍然显示红色“x” ,则可能需要删除该图像,然后重新将其插 入。
ss.cpp #include“ex1.h" #include ex1.h"
11
无法显示图像。计算机可能没有足够的内存以打开该图像,也可 能是该图像已损坏。请重新启动计算机,然后重新打开该文件。 如果仍然显示红色“x” ,则可能需要删除该图像,然后重新将其插 入。
函数的参数传递机制
主调函数: 主调函数: x D = power(x,3) 5 3
——参数值传递举例 参数值传递举例
15
void Swap(int a, int b) { int t; x 5 t=a; a=b; b=t; a 10 5 }
y
10
b 5
510
运行结果: 运行结果 x=5 x=5 y=10 y=10
t
无法显示图像。计算机可能没有足够的内存以打开该图像,也可 能是该图像已损坏。请重新启动计算机,然后重新打开该文件。 如果仍然显示红色“x” ,则可能需要删除该图像,然后重新将其插 入。
18
无法显示图像。计算机可能没有足够的内存以打开该图像,也可 能是该图像已损坏。请重新启动计算机,然后重新打开该文件。 如果仍然显示红色“x” ,则可能需要删除该图像,然后重新将其插 入。
输入两个整数交换后输出(用引用做形参) 函 例4-3 输入两个整数交换后输出(用引用做形参)
数 的 参 数 传 递 机 制
函 数 的 参 数 传 递 机 制
函数的参数传递
• 引用 引用(&)是变量的别名 例如 是变量的别名,例如 是变量的别名 例如:
无法显示图像。计算机可能没有足够的内存以打开该图像,也可 能是该图像已损坏。请重新启动计算机,然后重新打开该文件。 如果仍然显示红色“x” ,则可能需要删除该图像,然后重新将其插 入。
无法显示图像。计算机可能没有足够的内存以打开该图像,也可 能是该图像已损坏。请重新启动计算机,然后重新打开该文件。 如果仍然显示红色“x” ,则可能需要删除该图像,然后重新将其插 入。
C++程序设计 C++程序设计
第4章 函数和作用域 章
西南科技大学经管学院 李宇翔
无法显示图像。计算机可能没有足够的内存以打开该图像,也可 能是该图像已损坏。请重新启动计算机,然后重新打开该文件。 如果仍然显示红色“x” ,则可能需要删除该图像,然后重新将其插 入。
空瓶C 空瓶
14
无法显示图像。计算机可能没有足够的内存以打开该图像,也可 能是该图像已损坏。请重新启动计算机,然后重新打开该文件。 如果仍然显示红色“x” ,则可能需要删除该图像,然后重新将其插 入。
#include<iostream.h> void Swap(int a, int b); int main( ) ( { int x(5), y(10); cout<<"x="<<x<<" y="<<y<<endl; Swap(x,y); cout<<"x="<<x<<" y="<<y<<endl; return 0; }
被调用函数名(含类型说明的形参表) 类型标识符 被调用函数名(含类型说明的形参表);
如: int power(int a,int b);
• 使用系统提供的标准函数时,要将含有该函 使用系统提供的标准函数时, 数原型的头文件用#include命令包含到文件 数原型的头文件用 命令包含到文件 首部。 首部。
19
void Swap(int& a, int& b) { int t; t=a; x 10 5 a=b; a b=t; }
10
无法显示图像。计算机可能没有足够的内存以打开该图像,也可 能是该图像已损坏。请重新启动计算机,然后重新打开该文件。 如果仍然显示红色“x” ,则可能需要删除该图像,然后重新将其插 入。
课堂练习
• 编写一个函数求数的绝对值 并由主函数 编写一个函数求数的绝对值,并由主函数 调用。 调用。
double abs(double x) { double y; y=x>0?x:-x; return y; }
2
无法显示图像。计算机可能没有足够的内存以打开该图像,也可 能是该图像已损坏。请重新启动计算机,然后重新打开该文件。 如果仍然显示红色“x” ,则可能需要删除该图像,然后重新将其插 入。
函 数 的
函数的定义
定 • 函数是面向对象程序设计中的基本抽象 单元, 义 单元,是对功能的抽象 与 • 函数定义的语法形式 调 函数名(形式参数表) 类型标识符 函数名(形式参数表) 若无参数, 若无参数,写void { 用
3函数的定义?函数是面向对象程序设计中的基本抽象单元是对功能的抽象函数是面向对象程序设计中的基本抽象单元是对功能的抽象?函数定义的语法形式类型标识符函数名形式参数表语句序列函数的定义与调用若无参数写void是被初始化的内部变量寿命和可见性仅限于函数内部若无返回值写是被初始化的内部变量寿命和可见性仅限于函数内部若无返回值写void4函数的定义?形式参数表类型1参数名1类型2参数名2
语句序列 } 若无返回值, 若无返回值,写void
3
是被初始化的内部 变量, 变量,寿命和可见 性仅限于函数内部
无法显示图像。计算机可能没有足够的内存以打开该图像,也可 能是该图像已损坏。请重新启动计算机,然后重新打开该文件。 如果仍然显示红色“x” ,则可能需要删除该图像,然后重新将其插 入。
函 数 的 定 义 与 调 用
ex1.h bool ss(int m);
ex1.cpp #include“ex1.h" #include ex1.h"
编 译 ss.obj ex1.obj
编
译
连
接
可执行程序ex1.exe 可执行程序ex1.exe
多文件组织结构图
9
无法显示图像。计算机可能没有足够的内存以打开该图像,也可 能是该图像已损坏。请重新启动计算机,然后重新打开该文件。 如果仍然显示红色“x” ,则可能需要删除该图像,然后重新将其插 入。
函 数 的 声 明 与 调 用
例4-2
判断整数x是否仅由奇数字组成。 判断整数 是否仅由奇数字组成。 是否仅由奇数字组成 分析: 分析: 编写具有如下原型的函数: 编写具有如下原型的函数: bool allOddNum(int x); 其功能是:若整数x仅由奇数字(1、 其功能是:若整数 仅由奇数字( 、 仅由奇数字 3、5、7、9)组成时,函数返回 、 、 、 )组成时, true ,否则返回 否则返回false。并编写主函数, 否则返回 。并编写主函数, 对它进行调用。 对它进行调用。
函数的定义
• 形式参数表 <类型 参数名 类型 参数名 ..., 类型1>参数名 类型2>参数名 类型 参数名1,<类型 参数名2, <类型 参数名n <类型n>参数名n 类型n>参数名 • 函数的返回值
– 由 return 语句给出,例如: 语句给出,例如: return 0 – 无返回值的函数(void类型),不必写 无返回值的函数( 类型), 类型),不必写 return语句。 语句。 语句
#include<iostream.h> void Swap(int& a, int& b); int main( ) ( { int x(5), y(10); cout<<"x="<<x<<" y="<<y<<endl; Swap(x,y); cout<<"x="<<x<<" y="<<y<<endl; return 0; }
5
无法显示图像。计算机可能没有足够的内存以打开该图像,也可 能是该图像已损坏。请重新启动计算机,然后重新打开该文件。 如果仍然显示红色“x” ,则可能需要删除该图像,然后重新将其插 入。
函 数 的 函 数 原 型 与 调 用
6
函数的调用
• 调用形式
函数名(实参列表) 函数名(实参列表)
• 嵌套调用
——用引用做形参 用引用做形参
int i,j; int &ri=i; //建立一个int型的引用ri,并将其 建立一个int型的引用ri, //建立一个int型的引用ri,并将其 //初始化为变量 初始化为变量i //初始化为变量i的一个别名 j=10; ri=j;//相当于 i=j; 相当于
•引用有三种用途:作形参、作为函数的返回 引用有三种用途:作形参、 引用有三种用途 值和独立引用,主要还是前两种。 值和独立引用,主要还是前两种。 • 引用作为形参,称为引用调用。 引用作为形参,称为引用调用。 void swap(int& a, int& b) {...}
函 数 的 参 数 传 用引用做形参
#include<iostream.h> void Swap(int &a, int &b); int main( ) ( { int x(5), y(10); cout<<"x="<<x<<" y="<<y<<endl; Swap(x,y); cout<<"x="<<x<<" y="<<y<<endl; return 0; }
13
无法显示图像。计算机可能没有足够的内存以打开该图像,也可 能是该图像已损坏。请重新启动计算机,然后重新打开该文件。 如果仍然显示红色“x” ,则可能需要删除该图像,然后重新将其插 入。
函 数 的 参 数 传 递 机 制
A B C
例4-3输入两整数交换后输出
C A B
C=A 醋A A=B B=C 酱油B 酱油
函 数 的 函 数 原 型 与 调 用
函数原型与头文件
• 在具有多个文件的应用系统中,程序文件中 在具有多个文件的应用系统中, 定义的函数原型一般都放在一个头文件中。 定义的函数原型一般都放在一个头文件中。 • 头文件不仅仅用来保存系统标准函数的原型, 头文件不仅仅用来保存系统标准函数的原型, 也保存我们自己定义的函数原型。 也保存我们自己定义的函数原型。
a
5
b
3
被调函数: 被调函数: int power(int a, int b)
12
无法显示图像。计算机可能没有足够的内存以打开该图像,也可 能是该图像已损坏。请重新启动计算机,然后重新打开该文件。 如果仍然显示红色“x” ,则可能需要删除该图像,然后重新将其插 入。
函数的参数传递机制
——传递参数值 传递参数值 • 在函数被调用时才分配形参的存储单元。 在函数被调用时才分配形参的存储单元。 • 实参可以是常量、变量或表达式。 实参可以是常量、变量或表达式。 • 实参类型必须与形参相符。 实参类型必须与形参相符。 • 传递时是传递参数值,即单向传递。 传递时是传递参数值,即单向传递。
函 数 的 声 明 与 调 用 【例4-1】 】 编写一个函数可用来判断任给的 一个正整数是否为素数(或质数 或质数)。 一个正整数是否为素数 或质数 。 再编写主程序完成输入、 再编写主程序完成输入、调用和 输出。 输出。
7
无法显示图像。计算机可能没有足够的内存以打开该图像,也可 能是该图像已损坏。请重新启动计算机,然后重新打开该文件。 如果仍然显示红色“x” ,则可能需要删除该图像,然后重新将其插 入。
问题的提出
• 求 a b + x y 的值。 的值。 • 步骤: 步骤:
– – – – 从键盘输入a、b、x、y的值 从键盘输入 、 、 、 的值 b a 和 y 的值 分别求 求和 输出结果
x
思路:对于重复的代码可重用, 思路:对于重复的代码可重用,即将可重用代 码独立出来,单独作为一个函数。 码独立出来,单独作为一个函数。
4
无法显示图像。计算机可能没有足够的内存以打开该图像,也可 能是该图像已损坏。请重新启动计算机,然后重新打开该文件。 如果仍然显示红色“x” ,则可能需要删除该图像,然后重新将其插 入。
函 数 的 函 数 原 型 与 调 用
函数原型与头文件
• 编译系统在处理函数调用时,必须从程序中 编译系统在处理函数调用时, 获得完成函数调用所必需的信息,因此在调 获得完成函数调用所必需的信息,因此在调 用函数前必须进行函数原型说明 必须进行函数原型说明。 用函数前必须进行函数原型说明。 • 说明函数原型: 说明函数原型 函数原型: 在程序文件开头所有函数之前, 在程序文件开头所有函数之前,按如下形 式说明: 式说明:
– 函数不允许嵌套声明,但可以嵌套调用。 函数不允许嵌套声明,但可以嵌套调用。
• 递归调用
– 函数直接或间接调用自身。 函数直接或间接调用自身。
无法显示图像。计算机可能没有足够的内存以打开该图像,也可 能是该图像已损坏。请重新启动计算机,然后重新打开该文件。 如果仍然显示红色“x” ,则可能需要删除该图像,然后重新将其插 入。
8
函数的实现文件
函数的声明文件
主函数文件
无法显示图像。计算机可能没有足够的内存以打开该图像,也可 能是该图像已损坏。请重新启动计算机,然后重新打开该文件。 如果仍然显示红色“x” ,则可能需要删除该图像,然后重新将其插 入。
ss.cpp #include“ex1.h" #include ex1.h"
11
无法显示图像。计算机可能没有足够的内存以打开该图像,也可 能是该图像已损坏。请重新启动计算机,然后重新打开该文件。 如果仍然显示红色“x” ,则可能需要删除该图像,然后重新将其插 入。
函数的参数传递机制
主调函数: 主调函数: x D = power(x,3) 5 3
——参数值传递举例 参数值传递举例
15
void Swap(int a, int b) { int t; x 5 t=a; a=b; b=t; a 10 5 }
y
10
b 5
510
运行结果: 运行结果 x=5 x=5 y=10 y=10
t
无法显示图像。计算机可能没有足够的内存以打开该图像,也可 能是该图像已损坏。请重新启动计算机,然后重新打开该文件。 如果仍然显示红色“x” ,则可能需要删除该图像,然后重新将其插 入。
18
无法显示图像。计算机可能没有足够的内存以打开该图像,也可 能是该图像已损坏。请重新启动计算机,然后重新打开该文件。 如果仍然显示红色“x” ,则可能需要删除该图像,然后重新将其插 入。
输入两个整数交换后输出(用引用做形参) 函 例4-3 输入两个整数交换后输出(用引用做形参)
数 的 参 数 传 递 机 制