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

c语言学习,c语言课们件第11章.ppt

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

11.1 程序设计的基本方法 11.2 C语言对模块化编程的支持 11.3 多个源程序文件组成的C程序设计 4. register变量 一般情况下,变量的值存放在内存单元中。但是有一些使用频繁的变量,比如循环控制变量和循环体内反复引用的局部变量,如果循环的次数很多,对这些变量存取时要消耗很多的时间,为了提高程序的执行效率,C语言允许将局部变量的值存放在CPU的寄存器中,这样可以直接从寄存器取出这些变量,从而大大提高存取的速度。 只有局部自动变量和形式参数可以声明为register变量,对全局变量和静态局部变量不能声明为register类型,也就是说寄存器变量是动态存储类型。 ※注意:因为register变量可以保存在寄存器中,所以对这类变量不能使用取址操作符取它的地址。另外,实际上大多数系统register只对整型和字符型变量起作用。当今优化的编译系统能够自动识别使用频繁的变量,从而将这些变量存放在寄存器中,并不需要编程者指定。 11.2.3 内部函数与外部函数 1. 函数的存储分类 函数也可以像变量一样,通过static和extern声明改变它的作用范围。只能被本文件的其它函数调用的函数被称为内部函数,能被其它文件中的函数调用的函数称为外部函数。 (1) 内部函数 声明内部函数时,在函数名和函数类型的前面加static。 static 类型标识符 函数名(形参列表) 例如: static int fun(int m,int n) 内部函数又叫静态函数,和静态全局变量一样,由于在它们的前面使用static声明,使得其它文件不能引用它们,从而使得在不同的文件可以使用相同的文件名而不会产生干扰。这也是C语言支持程序模块化设计的一个特点。 【例11-7】内部函数举例。 /*exam11_7*/ /*file1.c*/ static int fun(int x,int y) /*声明函数fun为内部函数*/ { int z; z=x+y; return z; } int main(void) { extern fun1(int,int); int m,n,s; m=10; n=20; printf(“%d+%d=%d\n”,m,n,fun(m,n)); printf(“%d*%d=%d\n”,m,n,fun1(m,n)); } /*file2.c*/ static int fun(int x,int y)/*声明函数fun为内部函数*/ { int z; z=x*y; return z; } int fun1(int m,int n) { return fun(m,n); } 该程序由两个文件file1.c和file2.c组成,file1.c中的函数fun和file2.c中的函数fun同名,但是fun函数在两个文件中的功能不同,由于在各自文件中作了static声明,所以互不干扰。file2.c中的函数fun1没有作static声明,所以可以被file1.c中的main函数调用。 [演示] 10+20=30 10*20=200 运行结果: 注意要使用Change dir修改为file1和file2所在目录,同时输入“Project name”为exam11_7.prj。 (2) 外部函数 声明外部函数时,在函数名和函数类型的前面加extern。 extern 类型标识符 函数名(形参列表) 例如: extern int fun(int m,int n) 外部函数可以被其它文件的函数调用。C语言规定,如果在定义函数时省略extern,则隐含为外部函数。 虽然在定义外部函数时可以省略extern,但是在调用其它文件的函数时要用extern声明所用函数为外部函数或者利用函数原型进行声明。 【例11-8】外部函数举例。 利用外部函数实现:输入一个字符串,然后把字符串中所有数字字符删掉。 /*exam11_8*/ /*file1.c*/ void input(char s[ ]) /*定义外部函数input*/ { gets(s); /*输入字符串s*/ } void delete(char s[ ]) /*定义外部函数delete*/ { int j,k; for(j=k=0;s[j])!=’\0’;j++) if(!(s[j]=’0’s[j]=’9’)) /*不是数字字符则保留*/ s[k++]=s[j]; s[k]=’\0’; /*存放字符串结束符*/ } (续) /*file2.c*/ int mai

文档评论(0)

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

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

1亿VIP精品文档

相关文档