C#入门经典(第4版)课件 教学课件 作者 978 7 302 18587 1k ch09.pptVIP

C#入门经典(第4版)课件 教学课件 作者 978 7 302 18587 1k ch09.ppt

  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文档。上传文档
查看更多
C入门经典(第4版) 第09章 函数再探 学习了第8章后,读者就应具备创建和使用函数的基础知识了。本章将以此为基础,介绍函数的使用和操作,尤其是如何通过指针访问函数,也会使用一些更灵活的方法在函数之间通信 。 9.1 函数指针 指针对于操作数据和含有数据的变量是一个非常有用的工具。只要一把火钳就可处理所有火热的东西,同样,使用指针也可以操作函数,函数的内存地址存储了函数开始执行的位置(起始地址),存储在函数指针中的内容就是这个地址 。 声明函数指针 通过函数指针调用函数 函数指针数组 作为变元的函数指针 9.1.1 声明函数指针 函数指针的声明看起来有点奇怪,容易混淆,所以下面从一个简单的例子开始: int (*pfunction) (int); 9.1.2 通过函数指针调用函数 假定定义如下函数原型: int sum(int a, int b); /* Calculates a+b */ 这个函数有两个int类型的参数,返回值的类型是int,所以可以把它的地址存储在如下函数指针中: int (*pfun)(int, int) = sum; 9.1.3 函数指针数组 函数指针和一般的变量是一样的,所以可创建函数指针的数组。要声明函数指针数组,只需将数组的大小放在函数指针数组名之后。例如: int (*pfunctions[10]) (int); 这条语句声明了一个包含10个元素的pfunctions数组。这个数组里的每个元素都能存储一个函数的地址,该函数有两个int类型的参数,返回类型是int。 9.1.4 作为变元的函数指针 也可以将函数指针作为变元来传递,这样就可以根据指针所指向的函数,而调用不同的函数了 。 9.2 函数中的变量 将程序分解成函数,不仅简化了开发程序的过程,还增强了程序语言解决问题的能力。设计优良的函数常常可以重用,使新应用程序的开发变得更快、更简单。标准库就证明了可重用函数的威力。函数中变量的特性以及C语言在声明变量时提供的一些额外功能进一步增强了程序语言的力量 。 静态变量:函数内部的追踪 在函数之间共享变量 9.2.1 静态变量:函数内部的追踪 前面使用的所有变量在执行到定义它的块尾时就超出了作用域,它们在堆栈上分配的内存会被释放,以供另一个函数使用。这些变量称为自动变量,因为它们是在声明时自动创建的,在程序退出声明它的块后自动删除。这是一种非常高效的过程,因为只要正在执行的语句在声明变量的函数内,函数中包含数据的内存就会一直保存该数据 。 9.2.2 在函数之间共享变量 也可以在所有的函数之间共享变量。常量在程序文件的开头声明,所以常量位于组成程序的所有函数的外部),同样,也可以采用这种方式声明变量,这种变量称为全局变量(global variables),因为它们可以在任意位置访问。它的声明方式和一般变量相同,但声明它的位置非常重要,这个位置确定了变量是否为全局变量 。 9.3 调用自己的函数:递归 函数调用自己称为递归,递归在程序设计中不常见,所以本节仅介绍概念,不过在某些情况下,这是一个效率很高的技巧,可以显著简化解决特定问题所需的代码。递归也有几个坏处,但这里也不涉及 。 9.4 变元个数可变的函数 在标准库中,某些函数的变元数是可变的,例如函数printf()和scanf()。有时需要这么做,所以标准库stdarg.h提供了编写这种函数的例程 。 复制va_list 长度可变的变元列表的基本规则 9.4.1 复制va_list 有时需要多次处理可变的变元列表。stdarg.h头文件为此定义了一个复制已有va_list的例程。假定在函数中使用va_start()创建并初始化了一个va_list对象parg,现在要复制parg: va_list parg_copy; copy(parg_copy, parg); 9.4.2 长度可变的变元列表的基本规则 以下是编写变元数目可变的函数的基本规则: 在变元数目可变的函数中,至少要有一个固定变元。 必须调用va_start()初始化函数中可变变元列表指针的值。变元指针的类型必须声明为va_list类型。 必须有确定每个变元类型的机制。可以假设默认的类型,或用一个参数来指定变元的类型。例如,在average()函数中,可以有另一个固定的变元,它的值是0时,表示变元

您可能关注的文档

文档评论(0)

118压缩包课件库 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档