网站大量收购独家精品文档,联系QQ:2885784924

第13章 函数及调用.ppt

  1. 1、本文档共26页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第13章 函数及调用

第13章 函数的调用 函数调用的一般形式; 函数调用的形式; 被调用函数的声明与函数原型; 函数嵌套与递归调用; 变量作用域; 编译预处理。 13.1 函数调用的一般形式 函数调用的一般形式为: 函数名(实际参数表列); 如果是调用无参函数,则“实际参数表列”可以没有,但函数名后的括号是不能省略的。如果有多个实际参数,则各个参数之间用逗号隔开。实际参数的个数应与形式参数的个数相等,类型也应匹配。实际参数与形式参数顺序对应,一一传递数据。需要说明的是,在C语言中,实参表列的求值顺序是不确定的。有的系统按照自左向右的顺序计算,而有的系统相反。 13.2 函数调用的形式 根据函数在主调用函数中出现的位置,可以有以下3中调用方式。 1.被调用函数作为函数语句单独出现 printf(“I love China!”); scanf(“%d”,a); 2.被调用函数作为表达式出现 m=squar(a); n=3+squar(a); 3.被调用函数作为函数的参数出现 c=sum(a,sum(b,c)); 13.3 被调用函数的声明与函数原型 在一个函数被另一个函数调用之前,需要具备如下条件: 被调用函数必须是已经存在的函数。被调用函数可以是库函数或者用户自己定义的函数。 如果被调用函数是库函数,应该在程序开头用#include命令将调用有关库函数时所需要用到的信息“包含”到本程序中。在前边的例子中,用到了这样的命令: #includestdio.h 函数声明的一般形式是: 返回值类型函数名(参数类型声明表); 其中参数类型声明表的形式是: 参数类型[参数名][,参数类型[参数名]… 如果函数是无参函数,括号中的内容可以不写。方括号中的内容也可以不写,也就是说可以只写参数类型。比如这样声明就是正确的: int sum(int,int); 13.4 函数的嵌套调用和递归调用 C语言中的函数定义是互相平行、独立的,函数之间没有从属关系。在定义一个函数时,该函数不能包含另一个函数,即在一个函数定义中,其函数体中不能包含另一个函数的完整定义。即在C语言中不能嵌套定义。 13.4.1 函数的嵌套调用 尽管在C语言中不能嵌套定义,但可以嵌套调用函数,也就是说可以在调用一个函数的过程中调用另一个函数。 13.4.2 函数的递归调用 在调用一个函数的过程中又出现直接或间接地调用该函数本身,称之为函数的递归调用。例如: 13.5 变量作用域 在定义一个变量后,这个变量就有了一系列确定的性质,如数据长度、存储形式、数据的取值范围等等。除此之外,变量还有其他一些重要的属性,如变量在程序运行中何时有效,何时有效;变量在内存中何时存在、何时释放等等。变量的这些性质都与变量的作用域与生存期有关。 13.5.1 变量作用域和生存期 变量的作用域是指一个变量能够起作用的程序范围。如果一个变量在某个文件或函数范围内有效,则称该文件或函数为变量的作用域,在此作用域内可以引用此变量。 变量的生存期是指一个变量存在时间的长短。即从给变量分配内存,到所分配的内存被系统释放的时间。如果一个变量在某一时刻是存在的,则认为这一时刻属于该变量的“生存期”。 13.5.2 局部变量和全局变量 1.局部变量 2、全局变量 全局变量的优点: 设置全局变量可以增加函数间的联系。由于同一C程序中所有函数都能使用全局变量,如果在一个函数中改变了全局变量的值,其他函数会受到影响,相当于各个函数之间有直接的传递通道。由于函数只能带回一个返回值,因此有时可以利用全局变量在函数间传递数据,通过函数调用能得到一个以上的值。 全局变量的缺点: 全局变量使函数的执行依赖于外部变量,降低了函数的通用性。 降低了函数的清晰性。各个函数执行时都可能会改变全局变量的值,很难判断出每个瞬时各个全局变量的值。 全局变量在程序运行过程中都会占用内存单元。 13.5.3 变量存储类别 变量的存储类别指的是数据在内存中存储的方式。变量的存储方式可分为两类: 静态存储类和动态存储类。具体包含4中:自动型(auto)、静态型(static)、寄存器型(register)和外部型(extern)。 局部变量的存储方式 1、自动变量 auto int m,n; /*定义m、n为自动变量*/ 2、静态变量 static int m,n; /*定义m、n为自动变量*/ 【例13-9】 对于静态变量做以下几点说明: 局部静态变量是在静态存储区分配存储单元的,在整个程序运行期间都不释放。因此在函数调用结束后,它的值并不消失。 局部静态变量时在程序编译过程中被赋值的,且只赋值一次,在程序运行时其初值已经确定,以后每次调用函数时不再赋值,而是保留上一次函数调用结

文档评论(0)

ctuorn0371 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档