c语言-内部函数和外部函数

c语言-内部函数和外部函数

ID:15386163

大小:70.00 KB

页数:5页

时间:2018-08-03

c语言-内部函数和外部函数_第1页
c语言-内部函数和外部函数_第2页
c语言-内部函数和外部函数_第3页
c语言-内部函数和外部函数_第4页
c语言-内部函数和外部函数_第5页
资源描述:

《c语言-内部函数和外部函数》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、LAP8.10内部函数和外部函数 函数本质上是全局的,因为一个函数要被另外的函数调用,但是,也可以指定函数不能被其他文件调用根据函数能否被其他源文件调用,将函数区分为内部函数和外部函数。8.10.1内部函数如果一个函数只能被本文件中其他函数所调用,它称为内部函数。在定义内部函数时,在函数名和函数类型的前面加static。即static类型标识符函数名(形参表)如:staticintfun(inta,intb)内部函数又称静态函数。使用内部函数,可以使函数只局限于所在文件,如果在不同的文件中有同名的内部函数,互不干扰。这样不

2、同的人可以分别编写不同的函数,而不必担心所用函数是否会与其他文件中函数同名,通常把只能由同一文件使用的函数和外部变量放在一个文件中,在它们前面都static使之局部化,其他文件不能引用。8.10.2外部函数(1)在定义函数时,如果在函数首部的最左端冠以关键字extern,则表示此函数是外部函数,可供其他文件调用。如函数首部可以写为externintfun(inta,intb)这样,函数fun就可以为其他文件调用。C语言规定,如果在定义函数时省略extern,则隐含为外部函数。本书前面所用的函数都是外部函数。LAP(2)在需

3、要调用此函数的文件中,用extern声明所用的函数是外部函数。例8.22有一个字符串,内有若干个字符,今输入一个字符,要求程序将字符串中该字符删去。用外部函数实现。file1.c(文件1) main() {externenter-string(charstr[80]);externdelete-string(charstr[],charch);externprint-string(charstr[]); //以上3行声明在本函数中将要调用的在其他文件中定义的3个函数  charc;  charstr[80];  enter

4、-string(str); scanf("%c",&c);  delete-string(str,c);  print-string(str);}file2.c(文件2) #include enter-string(charstr[80])/定义外部函数enter-string*/{gets(str);}/读入字符串str*/file3.c(文件3)  delete-string(charstr[],charch)//定义外部函数delete-string  {inti,j;  for(i=j=

5、0;str[i]!=′\0′;i++)if(str[i]!=ch)   str[j++]=str[i];  LAPstr[j]=′\0′;  }file4.c(文件4)  print-string(charstr[])/定义外部函数print-string/ {  printf("%s",str);  }  运行情况如下:abcdefgc(输入str)  c(输入要删去的字符)  abdefg(输出已删去指定字符的字符串)整个程序由4个文件组成。每个文件包含一个函数。主函数是主控函数,除声明部分外,由4个函数调用语

6、句组成。其中scanf是库函数,另外3个是用户自己定义的函数。函数delete-string的作用是根据 给定的字符串str和要删除的字符ch,对str作删除处理。算法是这样的:对str数组的字符逐个检查,如果不是被删除的字符就将它存放在数组中,见图8.21(设删除空格)。从str[0]开始逐个检查数组元素值是否等于指定要删除的字符,若不是就留在数组中,若是就不保留。从图中可以看到,应该使str[0]赋给str[0],str[1]str[1],str[2]str[2],str[3]str[3],然后str[5]str

7、[4]……请读者注意分析如何控制i和j的变化,以便使被删除的字符不保留在原数组中。这个题目当然可以设两个数组,把不删除的字符一一赋给新数组。但我们只用一个数组,只把不被删除的字符保留下来。由于i总是大于或等于j,因此最后保留下来的字符不会覆盖未被检测处理的字符。最后将结束符‘\0’也复制到被保留的字符后面。程序中3个函数都定义为外部函数。在main函数中用extern声明在main函数中用到的enter-string、delete-string、print-string是在其他文件中定义的外部函数。通过此例可知:使用ext

8、ern声明就能够在一个文件中调用其他文件中定义的函数,或者说把该函数的作用域扩展到本文件。extern声明的形式就是在函数原型基础上加关键字extern(见本例main函数中的声明形式)。由于函数在本质上是外部的,在程序中经常要调用外部函数,为方便编程,C语言允许在声明函数时省写extern。例8.21

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。