刚学习完C后,做的关于C的课程设计是在一个源文件中放了几百行代码,而且各个功能之间都是相互依赖的,这样就会很麻烦。因为当我要修改某个地方的时候,就会牵连着要修改喝多的地方。而在实际的程序设计中,这也是不可取的。因此,模块化和封装的思想就显得很重要了!!!
static变量
static变量的一个显著的作用就是可以实现一个模块的封装。
static存储类别的特性决定了static声明的全局变量只能被本源文件的函数引用。当在一个源文件中定义一个static全局变量后,其他文件就不能通过使用“extern”关键词来引用该全局变量,而只能通过该源文件提供的接口函数来访问这个全局变量。
实例
我写了一个简单的实现杨辉三角的程序。其中,定义了一个静态全局变量数组a[100][100],然后后面的函数就是对该数组的一些操作。而该源文件之外的函数就只能够通过调用这些函数来完成对数组的操作。
Pascal_triangle.c
[cpp] view plain copy
1. #include <stdio.h>
2.
3. static int a[100][100];
4.
5. void Pascal_triangle(int num)
6. {
7. int i,j;
8.
9. for(i = 1; i <= num; i ++)
10. {
11. a[i][0] = 1;
12. a[i][i-1] = 1;
13. }
14.
15. for(i = 2;i < num; i ++)
16. {
17. for(j = 0; j < i -1; j ++)
18. {
19. a[i + 1][j + 1] = a[i][j] + a[i][j + 1];
20. }
21. }
22.
23. for(i = 1; i <= num;i ++)
24. {
25. for(j = 0; j < num; j ++)
26. {
27. printf("%d ",a[i][j]);
28. if(i == (j + 1))
29. {
30. printf("n");
31. break;
32. }
33. }
34. }
35. }
Pascal_triangle.h
[cpp] view plain copy
1. #ifndef PASCAL_TRIANGLE_H_INCLUDED
2. #define PASCAL_TRIANGLE_H_INCLUDED
3.
4. extern void Pascal_triangle(int num);
5.
6. #endif // PASCAL_TRIANGLE_H_INCLUDED
main.c
[cpp] view plain copy
1. #include <stdio.h>
2. #include "Pascal_triangle.h"
3.
4. int main(void)
5. {
6. int num;
7. printf("请输入数据:n");
8. scanf("%d",&num);
9. Pascal_triangle(num);
10. return 0;
11. }
这样做就实现了杨辉三角的实现程序对外界的封住,一个工程中的其他源文件里的函数不用了解杨辉三角函数里面的具体操作是如何进行的,只需要使用模块中提供的接口函数就可以了。这样杨辉三角的实现模块就完全的独立于其他的模块了。如图所示:
Pascal_triangle.h头文件就是向外界提供一个实现杨辉三角的接口函数的声明,这一点是很重要的。
当这样处理好一个源文件之后,不管怎样操作修改杨辉三角的实现函数,对其他的代码没有任何影响。但是有一点要注意:不要修改函数接口本身,因为一旦修改,其他代码就可能会有大的改动
文章最后
怎么快速学C/C++,有什么方法,打算深入了解这个行业的朋友,可以加C/C++学习群:648778840,不管你是小白还是大牛,小编我都欢迎,不定期分享干货,包括小编自己整理的一份2019最新的C/C++资料和0基础入门教程,欢迎初学和进阶中的小伙伴。
每天晚上20:00我都会开直播给大家分享C/C++编程学习知识和路线方法,群里会不定期更新最新的教程和学习方法,大家都是学习C/C++的,或是转行,或是大学生,还有工作中想提升自己能力的前端党,如果你是正在学习C/C++的小伙伴可以加入学习。最后祝所有程序员都能够走上人生巅峰,让代码将梦想照进现实,非常适合新手学习,有不懂的问题可以随时问我,工作不忙的时候希望可以给大家解惑。
网友评论