内容正文:
第7章 函数
第7章 函数
函数定义
函数调用及函数声明
数组作形参
变量的作用域
全局变量作用域的扩展
限制文件作用域
函数的易用性
递归1
递归2
库函数1
库函数2
团队开发++
代码复用与团队开发
一个人独自完成一个项目的情况很少见,团队开发可以充分发挥集体的力量更好地完成任务。这节课我们讨论代码复用与团队开发。
3
代码复用
常见的代码复用就是把特定的功能用函数实现,当需要该功能时直接调用函数,而不用重新编写实现功能的代码。
编译程序时,先在VC6.0中新建工程,一个工程可以包含多个源文件。为便于复用,函数通常定义在一个单独的文件中。
下面以输出100以内的质数为例说明怎样使用同属一个工程中的另一个源文件中的函数。
常见的代码复用就是把特定的功能用函数实现,当需要该功能时直接调用函数,而不用重新编写实现功能的代码。
编译程序时,先在VC6.0中新建工程,一个工程可以包含多个源文件。为便于复用,函数通常定义在一个单独的文件中。
下面以输出100以内的质数为例说明怎样使用同属一个工程中的另一个源文件中的函数。
4
例7-4 将例7-1中的isPrime函数定义在单独的文件中。
程序中将isPrime函数与main函数定义在一个源文件中,不便于isPrime函数的再次使用。
5
函数定义在单独的源文件中
VC6.0中,一个工程可以包含多个源文件。将isPrime函数单独定义在一个源文件中,便于函数的复用。
VC6.0中,一个工程可以包含多个源文件。将isPrime函数单独定义在一个源文件中,便于函数的复用。
如图,新建工程,再新建源文件isPrime,然后在该文件中定义isPrime函数。
接着再次新建源文件6,在该文件中写程序即定义main函数。
执行程序时发现语法错误,找不到isPrime函数。
使用同一工程中其它源文件里面的函数时,需要先进行函数声明。
6
函数声明
函数声明的形式为函数首部加上分号,即返回值类型 函数名(参数列表);
int isPrime(int x);函数声明中可以省略形参的名称,只保留类型,如
int isPrime(int);
函数声明的形式为函数首部加上分号,即返回值类型 函数名(参数列表);
int isPrime(int x);函数声明中可以省略形参的名称,只保留类型,如int isPrime(int);。
7
例7-5 编程验证哥德巴赫猜想:任意不小于4的偶数都可写成两个质数之和。例5-22
使用已经定义过的isPrime函数,代码简洁且编码效率高。
for(i=2; i<=even/2; ++i)
if(isPrime(i) == 1 && isPrime(even - i) == 1)
printf("%d = %d + %d
", even, i, even - i);
编程验证哥德巴赫猜想,使用已经定义过的isPrime函数,代码简洁且编码效率高。
8
使用isPrime函数
isPrime函数在单独的源文件isPrime.cpp中定义,因此,使用该文件即可。
isPrime函数在单独的源文件isPrime.cpp中定义,因此,使用该文件即可。
9
使用isPrime函数
拷贝isPrime.cpp文件到当前源文件所在的目录中,使用#include "isPrime.cpp"将函数的定义拷贝到当前源文件中。
拷贝isPrime.cpp文件到当前源文件所在的目录中,使用#include "isPrime.cpp"将函数的定义自动引入到当前源文件中。具体操作如下。
先找到上个工程中的isPrime.cpp文件,选择“文件”菜单中的“另存入”命令打开对话框,在对话框中单击选中isPrime.cpp文件,
按快捷键Ctrl+C复制文件,然后关闭对话框。
新建工程,新建源文件,定义main函数。再次选择“文件”菜单中的“另存入”命令打开对话框,在对话框中先单击选中任意一个文件,
再按快捷键Ctrl+V把isPrime.cpp文件复制到main函数所在的目录,即当前目录中。
这里的isPrime.cpp文件不属于工程,只能以文件包含的方式使用。
10
#include命令
#include命令的作用是把指定文件的内容插入到该语句所在位置并取代该语句,从而把指定的文件内容合并到当前的文件中。
有两种方式:#include <文件名>或#include "文件名",其中的<>和" "用于指定文件所在的目录。
“< >”表示到编译系统设定的目录中查找指定的文件。VC6.0中通过单击【工具】|【选项】命令,在弹出的“选项”对话框中,选择“目录”标签,可以设置查找目录,如图所示。
使用scanf函数和printf函数时用#include <stdi