C语言程序设计--用函数实现模块化程序设计.ppt

C语言程序设计--用函数实现模块化程序设计.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7章 “函数”的主要知识点 函数的定义 函数的参数 函数的返回值 函数的调用 变量的作用域与存储方式 一、 函数的递归调用 一、函数的递归调用 分析:用辗转相除法求最大公约数 if (m % n) = = 0 n 是公约数; else 求 n 和 m % n 的公约数; 求最大公约数的递归算法如下: int gcd(int m, int n) { if(m % n) == 0 return n ; else return gcd(n, m % n); } 汉诺塔 问题可分为三个步骤 二、数组作为函数的参数 数组作为函数参数主要有两种情况: 数组元素作为函数的实参:这种情况与普通变量作实参一样,是将数组元素的值传给形参。形参的变化不会影响实参数组元素,我们称这种参数传递方式为“值传递”。 数组名作实参:要求函数形参是相同类型的数组或指针,这种方式是把实参数组的起始地址传给形参数组,形参数组的改变也是对实参数组的改变,称这种参数传递方式为“地址传递”。 三、变量作用域与存储方式 先看一个例子,错在那里?: void f1( ) { int t=2; a *= t; b /= t; } int main() { int a, b; printf(“ Enter a,b:”); scanf(“%d,%d”, a, b); f1( ); //调用函数f1( ) printf (“a=%d,b=%d”, a, b); return 0; } (一)变量的作用域(变量的有效范围) 1.变量按作用域分为全局变量和局部变量 int x=1,y=2; sub(int y) { x++; y++; } int main( ) { int x=3; sub (x); printf(“x+y=%d”,x+y); return 0; } 请预习P220-P292页! 第8章 善于利用指针 按照变量定义语句出现的位置,可以分为: 全局变量: 在函数外定义; 从它被定义的位置起,在之后的所有函数中有效。 局部变量: 在函数内或复合语句内定义(包括形式参数); 只在该函数或复合语句中才能使用。 不同函数中同名局部变量互不干扰。 与局部变量同名的处理:局部变量屏蔽全局变量。 注意 (1)所有在函数体内定义 的变量 ; (2)形式参数。 所有函数体外定义的变量 举例 从定义处到本函数结束 从定义处到本源文件结束 作用域 函数体内 函数体外 定义位置 局部变量(内部变量) 全局变量(外部变量) 2、全局变量和局部变量的比较 (一)变量的作用域(变量的有效范围) 3、局部变量 内部变量:在一个函数内部定义的变量称内部变量。它只在本函数范围内有效,即:只有在本函数内才能使用这些变量,故也称为“局部变量” 。 例如: float f1( int a) //函数f1 {int b,c; … // a、b、c有效 } char f2(int x,int y) //函数f2 {int i,j; // x、y、i、j有效 } int main( ) //主函数 {int m,n; … // m、n有效 }    主函数中定义的变量只在主函数中有效,而不因为在主函数中定义而在整个文件或程序中有效。主函数也不能使用其他函数中定义的变量。 (2)不同函数中可以使用相同名字的变量,它们代表不同的对象,互不干扰。 (3) 形式参数也是局部变量。 (4) 在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效,这种复合语句也称为“分程序”或“程序块”。 3、局部变量 说明:

文档评论(0)

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

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

1亿VIP精品文档

相关文档