- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章函数与模块化程序设计; 4.1 函数
4.2 变量的存储属性
4.3 编译预处理
4.4 模块化编译链接
4.5 案例分析;教学内容;C语言中,一个程序无论多大多小,总是由一个或多个函数构成,这些函数分布在一个或多个源文件中。
每一个完整的C程序总是有一个main函数,它是程序的组织者,程序执行时也总是由main函数开始执行(main函数的第一条可执行语句称为程序的入口)。由main函数直接或间接的调用别的函数来辅助完成整个程序的功能。;函数充分而生动地体现了分而治之和相互协作的理念。函数用于将一个大的程序设计任务分解为若干个小的任务,这样便于实现,便于协作,便于重用,有效的避免了做什么都要从头开始进行。同时,大量的经过反复测试和实践检验的库函数更是提高了程序的开发效率、质量以及有效的降低了开发成本。这体现了程序设计中分工协作的思想。
程序用于模拟客观世界,函数抽象了现实生活中能相对独立的进行工作的人或组织,函数间的相互协作正好映射了现实生活中人或组织间的相互协作。
另外,函数还体现了封装的思想,它有效地将函数内部的具体实现封装起来,对外只提供可见的接口(传入的形式参数与返回的函数值),这样,调用函数时就不用关心该函数内部具体的实现细节,而只需关注它的接口,即可调用和使用它来辅助完成自己的功能。另外,利用函数还可以大大的降低整个程序总的代码量。 ;4.1函数; 4.1.1 函数的定义与声明
函数的定义
函数是一段相关代码的抽象,它通过函数名将相关的代码组织在一起,对输入的数据(称为参数)进行处理,然后返回特定的输出(称为返回值)。一旦定义好函数之后,就完成了函数名和该函数对应的相关代码的绑定,以后就可以利用函数名进行调用这段代码来完成相应的功能。
定义的语法格式 ;说明
函数包含函数头和函数体两部分。
函数头(也称为函数签名):
返回类型 函数名(形式参数列表)
函数体:由“{”和“}”这两个符号括起来的若干条语句。
语句主要包含定义数据、处理数据和通过return语句返回处理后的结果数据三部分。这三部分并非必须,根据实际需要可选择。
;函数名代表了函数本身,是函数整体的抽象,也代表了该函数对应的代码在内存中的存储首地址。对函数的调用通过函数名进行。
函数的形式参数列表
表示函数的输入数据有哪几个,各个数据的名和类型分别是什么。不同的输入数据之间用逗号隔开。
函数的返回类型表示了函数对输入的数据进行处理以后返回给调用函数处的结果数据,该数据也有一定的类型。如果一个函数不返回任何值,则它的返回类型为void空类型,即它返回空值或什么也不返回,这时候返回语句可以写成return;或干脆省略(编译器会自动加上return;语句)。 ;简单函数举例;【例4-3】 求两数中的最大值函数max。(代码片段);【例4-4】 计算1+2+3+…+n的和的函数sum。(代码片段) ;【例4-5】 判断输入的正整数n是否为质数的函数isPrime。(代码片段) ;函数的声明
是指在程序中调用函数时,函数还未定义,即该函数的定义还在调用处的后面,这时候就需要在调用函数前进行函数声明。声明的目的在于提前告诉编译器,该函数的函数名是什么,形式参数有几个,每个形式参数各是什么类型,返回值类型是什么(这几项合起来称为函数的原型,函数的声明也称为声明函数的原型)。这样,编译器遇到调用该函数时,就会根据上面的几项内容进行语法检查,看调用处是否和定义时的一致,如果不一致,则会提示语法错误。如果函数的定义在调用处的前面,则不需声明,编译器会自动根据函数的定义去检查函数的调用格式是否正确。
函数声明的语法格式如下:
返回类型 函数名(形式参数列表);
如例4-1中定义的符号函数sign的声明的语法格式如下:
int sign(int n); ;注意:在声明时,对于函数的形式参数列表,每个参数的类型是必须的,而参数名则可选。另外,声明时如果给出每个参数名,则这个名可以和定义时的名一致,也可以重新命名。一般的,为了使程序更易读,声明时参数名最好和定义时的名一致。如上面的sign函数又可声明如下:
int sign(int k); 或者int sign(int);
声明的位置可以在调用该函数前的任何函数之外声明,也可以在调用该函数的函数内,调用处之前声明。; 4.1.2函数的调用与传参;【例4-6】 输出1到100以内所有的质数,每行5个。(完整可运行程序) ;//【例4-6】输出1到100以内所有的质数,每行5个。(完整可运行程序)
#include stdio.h
int isPrime(int n); //此处为isPrime函数的声明。
int main(int argc, char *a
文档评论(0)