【C语言学习】封装和模块化思想
来源:互联网 发布:淘宝达人介绍 编辑:程序博客网 时间:2024/05/23 01:15
【C语言学习】封装和模块化思想
2014-7-6阅读1162 评论2
刚学习完C后,做的关于C的课程设计是在一个源文件中放了几百行代码,而且各个功能之间都是相互依赖的,这样就会很麻烦。因为当我要修改某个地方的时候,就会牵连着要修改喝多的地方。而在实际的程序设计中,这也是不可取的。因此,模块化和封装的思想就显得很重要了!!!
★static变量
static变量的一个显著的作用就是可以实现一个模块的封装。
static存储类别的特性决定了static声明的全局变量只能被本源文件的函数引用。当在一个源文件中定义一个static全局变量后,其他文件就不能通过使用“extern”关键词来引用该全局变量,而只能通过该源文件提供的接口函数来访问这个全局变量。
★实例
我写了一个简单的实现杨辉三角的程序。其中,定义了一个静态全局变量数组a[100][100],然后后面的函数就是对该数组的一些操作。而该源文件之外的函数就只能够通过调用这些函数来完成对数组的操作。
Pascal_triangle.c
#include <stdio.h>static int a[100][100];void Pascal_triangle(int num){ int i,j; for(i = 1; i <= num; i ++) { a[i][0] = 1; a[i][i-1] = 1; } for(i = 2;i < num; i ++) { for(j = 0; j < i -1; j ++) { a[i + 1][j + 1] = a[i][j] + a[i][j + 1]; } } for(i = 1; i <= num;i ++) { for(j = 0; j < num; j ++) { printf("%d ",a[i][j]); if(i == (j + 1)) { printf("\n"); break; } } }}Pascal_triangle.h
#ifndef PASCAL_TRIANGLE_H_INCLUDED#define PASCAL_TRIANGLE_H_INCLUDEDextern void Pascal_triangle(int num);#endif // PASCAL_TRIANGLE_H_INCLUDEDmain.c
#include <stdio.h>#include "Pascal_triangle.h"int main(void){ int num; printf("请输入数据:\n"); scanf("%d",&num); Pascal_triangle(num); return 0;}这样做就实现了杨辉三角的实现程序对外界的封住,一个工程中的其他源文件里的函数不用了解杨辉三角函数里面的具体操作是如何进行的,只需要使用模块中提供的接口函数就可以了。这样杨辉三角的实现模块就完全的独立于其他的模块了。如图所示:
Pascal_triangle.h头文件就是向外界提供一个实现杨辉三角的接口函数的声明,这一点是很重要的。
当这样处理好一个源文件之后,不管怎样操作修改杨辉三角的实现函数,对其他的代码没有任何影响。但是有一点要注意:不要修改函数接口本身,
因为一旦修改,其他代码就可能会有大的改动
http://www.cnblogs.com/zhaoli/p/4176618.html
http://m.blog.csdn.net/blog/XGsilence/37091831
0 0
- 【C语言学习】封装和模块化思想
- 【C语言学习】封装和模块化思想
- c语言模块化思想
- C语言模块化程序设计思想的理解
- C语言模块化编程的思想
- C语言学习之模块化编程
- 模块化和封装
- C语言面向对象的封装、继承和多态的思想
- C语言实现面向对象的思想(实现封装、继承和多态)
- C语言模块化
- C语言模块化程序设计
- C语言模块化编程
- C语言模块化
- c 语言的模块化
- C语言模块化要点
- c语言模块化编程
- C语言模块化编程
- C语言模块化初步
- xcode中设置ios9应用程序图标和启动图
- 正则表达式
- CodeForces - 13D Triangles
- Google Java编程规范
- leetcode Power of Two
- 【C语言学习】封装和模块化思想
- IOS 拼接参数与URL
- linux驱动之看门狗
- hibernate中的Query查询和criteria查询的区别
- LeetCode 28 : Implement strStr() (Java)
- PHP账号密码HashPassword加密方式破解代码实例
- Redis: Jedis 源代码剖析2- 发布者/订阅者模式剖析
- leetcode Basic Calculator
- ubuntu中的大小写