《chap6(函数与宏定义).pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
6.1 函数概念 ? 形参变量在被调用前不占用存储单元;在被调用结束后,形参所占存储单元亦被释放。 ? 实参可以是常量、变量或表达式。 ? 必须指定形参类型,且应与实参的类型一致。 ? 实参对形参的数据传递是“值传递”。即单向传递,不能逆传。 ? 函数的返回值是通过return语句获得的。 ? return语句的后面可以有括号,也可以没有。如: return z ; ? return(z); ? return语句的后面可以是变量,也可以是表达式。如: return(x y ? x : y); ? return语句返回值的类型应与该函数的类型一致。否则以函数类型为准。 ? 函数类型缺省时按整型处理。 1.函数调用的一般形式 函数名(实参表) 说明: ? 对于无参函数,也不得省略一对小括号。 “实参表”中的参数之间用逗号分开。 ? 实参与形参之间的个数及类型必须一一对应。 ? 将函数调用作为一个语句。如: printf(“MS C pragramming”); gets(s); ? 将被调用的函数写在表达式中。如: c=2?max(a, b); 注意:被调用函数max必须有确定的返回值。 ? 将函数调用作为一个函数的实参。如: m=max(max(a, b), c); 3.对被调用函数的说明 在一个函数中调用另一个函数时: ? 如果被调函数为库函数,则应在文件开头用“#include”命令声明相应的“头文件”。如: #include “stdio.h” #include “math.h” ? 如果被调函数为自定义函数且其定义在主调函数定义之前,则在主调函数中可不必声明。 ? 如果已在所有函数定义之前已作了函数声明,则在各主调函数中可不必对所调用的函数再作声明。如: char letter( ); float f( ); int i( );? main( ) {……} /? 不必说明它所调用的函数的类型 ?/ 1.局部变量 局部变量----在一个函数内部定义的变量,只能在本函数内使用和有效。 ?主函数main中定义的变量,也只能在主函数内使用和有效。 ?不同的函数中可以使用相同名字变量,且互不干扰。 ?形式参数也是局部变量,也只能在所在函数内使用和有效。 ?可以在一个函数内的复合语句中定义变量,且这些变量只在本复合语句中有效。 这种复合语句也称为“分程序”或“子模块”。 2.全局变量 全局变量(外部变量)-----在函数(包括main函数)外定义的变量。其有效范围为从定义变量的位置开始到本源文件结束。 内存中供用户使用的存储区由程序区、静态存储区和动态存储区组成。 变量的存储类型有四种: 自动的(auto):内存的动态存储区 静态的(static) :静态存储区 寄存器的(register):寄存器 静态变量在程序的运行期间占用固定的存储空间,直到程序的终止而释放; 动态变量是在程序的运行期间随着函数的调用随时动态地占用和释放存储空间。 局部变量的存储方式 函数中的局部变量若未专门说明,这类局部变量称为自动变量,其类型说明前不论是否有关键字“auto”,都属于动态存储类别。 ? 局部静态变量 在静态存储区分配存储单元,在程序的整个运行期间都不释放。 在编译时只赋初值一次,以后每次被调用时不再重新赋值而只保留前次被调用结束时的值。 若未赋初值,则在编译时自动赋初值0 (数值型)或空字符(字符 型)。 虽然局部静态变量在函数被调用结束后其值仍然存在,但其它函数是不能引用的。 ?动态变量 在动态存储区分配存储单元,函数调用结束后即释放。 赋初值不是在编译时而是在函数被调用时进行的,函数每次被调用时重新赋值。 若未赋初值,则其值是不确定的 根据函数是否能被其它文件所调用,分为: 1.内部函数----只能被本文件的其它函数所调用的函数 定义方式 如: static int fun(a, b); 2.外部函数----可以被其它文件所使用的函数。 定义方式如: extern int fun(a, b); 如果省略extern,则隐含该函数为外部函数。 直接递归调用:在函数定义的语句中,存在着调用本函数的语句。 间接递归调用:在不同的函数定义中,存在着互相调用函数语句的情况。(P136) 一个函数能设计成为递归函数,在数学上必须具备以下两个条件

文档评论(0)

maxianhui + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档