函数以及面向对象的思想
2016-07-25 16:21
218 查看
一、函数的三要素:
函数名、函数形参、函数返回值
二、写成函数的原因:
1、代码的维护性提高
2、代码的复用性提高
3、叠代开发
三、函数名
1、函数名要体现函数的功能(自注释性)
2、函数名是一个指针常量,保存的是函数存放的地址(入口地址)
四、函数的调用:
1、通过函数名找到函数的入口地址
2、给形参分配内存空间
3、传值:把实参变量对应空间的值传给形参
4、执行函数体中的语句
5、函数返回并释放内存空间
五、如何确定传值还是传址
读(不修改)实参变量对应内存空间的值时,传实参变量名
写(修改)实参变量对应的内存空间的值时,传实参的地址
六、传入参数和传出参数
传出参数:原本没有值,在经过函数调用后,有了值,相当于函数的返回值
传入参数:原本有值,在经过函数调用后,传入进去,给函数使用
七、C语言中哪些点体现了面向对象?
1、宏定义: 我们可以先看一个简单的例子:#define MacroFunction MAX_SIZE 然后在程序里面你调用了大量的MAX_SIZE,但是有一天,你突然发现你要用MAX了,(不过MAX_SIZE又不能不要,很有可能你以后还要调用),这个时候,你就可以#define MacroFunction MAX来达到这样的目的。
2、静态的入口函数,保证函数名相同,利用标志位调用子函数:网卡驱动是和pNA+协议栈互连的,那么如何保证pNA+协议栈和不同的驱动都兼容呢,一个简单的办法就是仅仅使用一个入口函数。通过改变如果函数的参数值,来调用内部的各个函数。这样的做法是可以进化的:如果以后想调用新的函数,增加相应的函数参数值就好。如果我们将网卡驱动和pNA+协议栈看作两个层的话,我们可以发现: 层与层之间的互连接口是很小的(这里是一个入口函数),一般是采用名字解析的办法而不是具体的函数调用(利用FunctionCode调用函数,Nilan仅仅实现名字解析的功能)!
3、CALLBACK函数:如果说静态入口函数实现了一个可管理的宏观的话,CallBack就是实现了一个可进化的微观:它使得一个函数可以在不重新编译的情况下实现功能的添加!
函数名、函数形参、函数返回值
二、写成函数的原因:
1、代码的维护性提高
2、代码的复用性提高
3、叠代开发
三、函数名
1、函数名要体现函数的功能(自注释性)
2、函数名是一个指针常量,保存的是函数存放的地址(入口地址)
四、函数的调用:
1、通过函数名找到函数的入口地址
2、给形参分配内存空间
3、传值:把实参变量对应空间的值传给形参
4、执行函数体中的语句
5、函数返回并释放内存空间
五、如何确定传值还是传址
读(不修改)实参变量对应内存空间的值时,传实参变量名
写(修改)实参变量对应的内存空间的值时,传实参的地址
六、传入参数和传出参数
传出参数:原本没有值,在经过函数调用后,有了值,相当于函数的返回值
传入参数:原本有值,在经过函数调用后,传入进去,给函数使用
七、C语言中哪些点体现了面向对象?
1、宏定义: 我们可以先看一个简单的例子:#define MacroFunction MAX_SIZE 然后在程序里面你调用了大量的MAX_SIZE,但是有一天,你突然发现你要用MAX了,(不过MAX_SIZE又不能不要,很有可能你以后还要调用),这个时候,你就可以#define MacroFunction MAX来达到这样的目的。
2、静态的入口函数,保证函数名相同,利用标志位调用子函数:网卡驱动是和pNA+协议栈互连的,那么如何保证pNA+协议栈和不同的驱动都兼容呢,一个简单的办法就是仅仅使用一个入口函数。通过改变如果函数的参数值,来调用内部的各个函数。这样的做法是可以进化的:如果以后想调用新的函数,增加相应的函数参数值就好。如果我们将网卡驱动和pNA+协议栈看作两个层的话,我们可以发现: 层与层之间的互连接口是很小的(这里是一个入口函数),一般是采用名字解析的办法而不是具体的函数调用(利用FunctionCode调用函数,Nilan仅仅实现名字解析的功能)!
3、CALLBACK函数:如果说静态入口函数实现了一个可管理的宏观的话,CallBack就是实现了一个可进化的微观:它使得一个函数可以在不重新编译的情况下实现功能的添加!
相关文章推荐
- YoMail新版发布会:YoMail+石墨文档+坚果云,重新定义Email APP发展新方向
- poj 1988 Cube Stacking
- 软件性能测试理论手札(二)
- beanstalkd 消息队列
- Oracle sql语句中(+)作用
- TCP粘包处理
- 随机数的生成方法
- 图片的缩放和移动
- java如何读取配置文件中的内容
- ListView常用拓展(Android群英传)
- 实现一个函数判断year是不是闰年。
- HTTP请求——ETag
- hdu5179 数位dp
- int与float深入理解
- ICO图标提取编辑专家2007 V5.0
- 代码大全_第七部分: 软件工艺
- Android 使用Vitamio打造自己的万能播放器(8)――细节优化
- android studio2.1解决Unable to detect adb version, adb output
- Android控制控件的位置和控件是否可见
- QQ空间直播秒开优化实践