[高等教育]第8章 函数.ppt

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

函数定义举例 7.3 函数声明的方法 7.3 函数声明的方法 函数声明举例 (1) 7.3 函数声明的方法 函数声明举例 (2) 7.3 函数声明的方法 函数声明举例 (3) 作业: 5、若程序中定义了以下函数 double myadd(double a,double B) { return (a+B) ;} 并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是 A) double myadd(double a,B) ; B) double myadd(double,double); C) double myadd(double b,double A) ; D) double myadd(double x,double y); 7.7.2数组名作函数参数 用数组名作函数参数,是传地址方式. 传地址方式(双向传递): 当需要传递大量数据给一个函数时,采用值传递太烦琐,可以把这些数据集中存放在一块内存区域中,然后把这块内存的首地址传给函数,函数根据地址找到它需要的数据,这就是传地址方式(双向传递)。 7.7.2数组名作函数参数 用数组名作函数参数,是双向传递 数组做函数参数时,形参数组和实参数 组共享同一存储单元。 如果形参数组元素的值改变了,那么实 参数组元素的值也就被改变了。 7.7.2数组名作函数参数 例:参数传递举例 7.7.2数组名作函数参数 例:写一函数,使输入的一个字符串按反序 存放,在主函数中输入和输出字符串。 7.7.2数组名作函数参数 void main() { int a, b, i; ... ... { int c, i; c = a + b; i = a - b; ... ... } ... ... } ???局部变量举例 1. 有以下程序 void f(int v , int w) { int t; t=v;v=w;w=t; } void main( ) { int x=1,y=3,z=2; if(xy) f(x,y); else if(yz) f(y,z); else f(x,z); printf(“%d,%d,%d\n”,x,y,z); } 执行后输出结果是 A) 1,2,3 B) 3,1,2 C) 1,3,2 D) 2,3,1 全局变量作业: 变量存储类别 函 数 内 函 数 外 作用域 存在性 作用域 存在性 自动变量和寄存器变量 ∨ ∨ ╳ ╳ 静态局部变量 ∨ ∨ ╳ ∨ 静态外部变量 ∨ ∨ ∨(只限本文件) ∨ 外部变量 ∨ ∨ ∨ ∨ 各种类型变量的作用域和存在性的情况 (5) static对局部变量和全局变量的作用不同 局部变量使变量由动态存储方式改变为静态存储方式 全局变量使变量局部化(局部于本文件),但仍为静态存储方式 从作用域角度看,凡有static声明的,其作用域都是局限的,或者是局限于本函数内(静态局部变量),或者局限于本文件内(静态外部变量) 7.10 关于变量的声明和定义 一般为了叙述方便,把建立存储空间的变量声明称定义,而把不需要建立存储空间的声明称为声明 在函数中出现的对变量的声明(除了用extern声明的以外)都是定义 在函数中对其他函数的声明不是函数的定义 7.11 内部函数和外部函数 7.11.1 内部函数 7.11.2 外部函数 7.11.1 内部函数 如果一个函数只能被本文件中其他函数所调用,它称为内部函数。 在定义内部函数时,在函数名和函数类型的前面加static,即: static 类型名 函数名(形参表) 7.11.1 内部函数 内部函数又称静态函数,因为它是用static声明的 通常把只能由本文件使用的函数和外部变量放在文件的开头,前面都冠以static使之局部化,其他文件不能引用 提高了程序的可靠性 例7.16 考察静态局部变量的值。 #include stdio.h void main() { int f(int); int a=2,i; for(i=0;i3;i++) printf(“%d\n”,f(a)); } int f(int a) { auto int b=0; static c=3; b=b+1; c=c+1; return(a+b+c); } b c 第二次调用开始 0

文档评论(0)

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

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

1亿VIP精品文档

相关文档