`

第8章 函数(八)函数的分级保护

 
阅读更多

声明:文中观点仅代表个人,其中文字、图片未经本人许可,不得部分或全部转载,违者所造成影响后后果自负!联系本人方式:80368704@qq.com QQ:80368704

内部函数和外部函数

在面向过程的程序设计思想中,蕴藏着很多面向对象的程序设计思想的萌芽,除了前面我们看到的对数据的保护思想外,对函数调用的保护也是这些可贵的萌芽之一.

我一直试图用最浅显的语言和最简单的程序实例,说明程序设计的一些原理.不过用简单的程序实例,说明复杂的思想或原理,是一件极难的事情,对于函数调用的说明就是如此.
我们学习标准c的这些原理时:首要的任务是先理解这些原理的意义,如果可能再在程序中应用这些原理;我们将来是一定要进入c++的,c++是面向对象的,对数据和函数的保护原理有了革命性的变化,在标准c中具体的保护技术在c++中大都过时了,但保护的思想被革命性的继承了下来.说这些的意思就是告诉你,保护的思想意义比具体保护技术重要的多,你的任务是首先理解函数保护的意义!

第一点:一个单位的领导,他用谁,谁就有用;如果领导认为你没用,不用你,你在这个单位就不会发挥任何作用.就像电线杆子戳在那里,就像聋子的耳朵----配搭.

第二点:前面我们讲到过变量可以定义成全局变量,可以定义为局部变量,我们可以从定义位置上来快速区别它们,如果一个变量定义在所有函数之外,他就是全局变量,所有的工程函数都可以使用它.
第三点:对于我们本章的例题-----程序4,一切从main()函数开始,而且从main()结束。顾名思义main()----主函数就是这个程序的领导,这应该毫无疑问的,如果main()中不调用max();那么max();摆在那里就没有任何用处;就像电线杆子戳在那里,就像聋子的耳朵----配搭.同样min();average();也是为了main()调用它们完成相应的任务而诞生的.当然,子函数不仅能被主函数调用,子函数之间也可以相互调用.
总而言之一句话:子函数就是要被另外的函数调用的.
反过来说,如果希望工程的所有函数都可以使用某个变量,那么你必须把它定义成全局的。

我们再看一下子函数,既然一个子函数就是要被另外的函数调用的,那么它天生就应该具有全局性,换句话说,子函数天生就是全局的,对外开放的,或者叫外部的,他必须被其他函数唤醒。我们说子函数天生的作用域是全部工程域。

第四点:我们有时也限定子函数的作用域,例如,如果你做了大程序,这个程序是一个工程,这个工程有10个C文件组成,每个C文件中有10个子函数,假设,有一个文件的文件名是prg1.c,其中有一个函数的名字是max(),正常情况下,max()可以被这个工程中所有10个C文件中的子函数调用,但是,现在,我们可以对max()子函数作一个限制,让它只能被prg1.c文件中的子函数调用,其他的C文件中的函数不能调用max(),这需要如下的书写max:
==================援引自谭浩强<C程序设计>P199===========================
如果定义子函数时在函数名和函数类型的前面加static,例如:
static float max(){};
可以使函数的作用域限制于所在文件,这种函数只能被本文件中的其他函数所调用,它称为内部函数。
于是在不同的文件中有同名的内部函数,互不干扰。这样不同的人可以分别编写不同的函数,而不必担心所用函数是否会与其它文件中函数同名,通常把只能由同一个文件使用的函数和外部变量放在一个文件中,在它们前面都冠以static使之局部化,其他文件不能引用。
================================================================================================
在你完成一个具有工程规模的程序之前,上面这些内容只能是雾里看花,水中望月,于是,我只能建议你立即行动,去写个多文件的工程程序,编译连接运行,测试一下,别无他法。
分享到:
评论

相关推荐

    EXCEL VBA应用开发与实例精讲

    EXCEL VBA应用开发与实例精讲 作 者: 夏强 编著. 出 版 社: 科学出版社 ...第8章 日程安排表 第9章 数字拼图 第10章 无纸考试系统 第11章 用户分级管理系统 第12章 成绩管理系统 附录A 宏与VBA

    EXCEL VBA应用开发与实例精讲1/4

    EXCEL VBA应用开发与实例精讲 作 者: 夏强 编著. 出 版 社: 科学出版社 ...第8章 日程安排表 第9章 数字拼图 第10章 无纸考试系统 第11章 用户分级管理系统 第12章 成绩管理系统 附录A 宏与VBA

    EXCEL VBA应用开发与实例精讲4/4

    EXCEL VBA应用开发与实例精讲 作 者: 夏强 编著. 出 版 社: 科学出版社 ...第8章 日程安排表 第9章 数字拼图 第10章 无纸考试系统 第11章 用户分级管理系统 第12章 成绩管理系统 附录A 宏与VBA

    EXCEL VBA应用开发与实例精讲2/4

    EXCEL VBA应用开发与实例精讲 作 者: 夏强 编著. 出 版 社: 科学出版社 ...第8章 日程安排表 第9章 数字拼图 第10章 无纸考试系统 第11章 用户分级管理系统 第12章 成绩管理系统 附录A 宏与VBA

    中文版Excel.2007高级VBA编程宝典.part1

     第8章 VBA编程基础  8.1 VBA语言元素概览  8.2 注释  8.3 变量、数据类型和常量  8.3.1 数据类型的定义  8.3.2 声明变量  8.3.3 变量的作用域  8.3.4 常量的使用  8.3.5 字符串的使用  8.3.6 日期的使用 ...

    集体智慧编程中文版

    对“热度”评价进行建模 什么时候使用决策树 练习 第8章 构建价格模型 构造一个样本数据集 k-最近邻算法 为近邻分配权重 交叉验证 不同类型的变量 对缩放结果进行优化 不对称分布 使用真实数据——eBay API 何时...

    程序员的SQL金典6-8

    第8章 子查询  8.1 子查询入门  8.1.1 单值子查询  8.1.2 列值子查询  8.2 SELECT列表中的标量子查询  8.3 WHERE子句中的标量子查询  8.4 集合运算符与子查询  8.4.1 IN运算符  8.4.2 ANY和SOME运算符  ...

    程序员的SQL金典7-8

    第8章 子查询  8.1 子查询入门  8.1.1 单值子查询  8.1.2 列值子查询  8.2 SELECT列表中的标量子查询  8.3 WHERE子句中的标量子查询  8.4 集合运算符与子查询  8.4.1 IN运算符  8.4.2 ANY和SOME运算符  ...

    程序员的SQL金典4-8

    第8章 子查询  8.1 子查询入门  8.1.1 单值子查询  8.1.2 列值子查询  8.2 SELECT列表中的标量子查询  8.3 WHERE子句中的标量子查询  8.4 集合运算符与子查询  8.4.1 IN运算符  8.4.2 ANY和SOME运算符  ...

    程序员的SQL金典3-8

    第8章 子查询  8.1 子查询入门  8.1.1 单值子查询  8.1.2 列值子查询  8.2 SELECT列表中的标量子查询  8.3 WHERE子句中的标量子查询  8.4 集合运算符与子查询  8.4.1 IN运算符  8.4.2 ANY和SOME运算符  ...

    程序员的SQL金典.rar

    第8章 子查询  8.1 子查询入门  8.1.1 单值子查询  8.1.2 列值子查询  8.2 SELECT列表中的标量子查询  8.3 WHERE子句中的标量子查询  8.4 集合运算符与子查询  8.4.1 IN运算符  8.4.2 ANY和SOME运算符  ...

    EXCEL 2007 宝典 7/10

     第8章 工作簿的打印 第2部分 Excel 2007函数  第9章 介绍公式和函数  第10章 创建操作文本的公式  第11章 处理日期和时间  第12章 创建计数和求和的公式  第13章 创建查找数值的公式  第14章 创建...

    EXCEL 2007 宝典 1/10

     第8章 工作簿的打印 第2部分 Excel 2007函数  第9章 介绍公式和函数  第10章 创建操作文本的公式  第11章 处理日期和时间  第12章 创建计数和求和的公式  第13章 创建查找数值的公式  第14章 创建...

    EXCEL 2007 宝典 2/10

     第8章 工作簿的打印 第2部分 Excel 2007函数  第9章 介绍公式和函数  第10章 创建操作文本的公式  第11章 处理日期和时间  第12章 创建计数和求和的公式  第13章 创建查找数值的公式  第14章 创建...

Global site tag (gtag.js) - Google Analytics