美文网首页编程交流
C语言学习|封装和模块化思想

C语言学习|封装和模块化思想

作者: 6dd77184077e | 来源:发表于2019-04-25 19:42 被阅读0次

刚学习完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++的小伙伴可以加入学习。最后祝所有程序员都能够走上人生巅峰,让代码将梦想照进现实,非常适合新手学习,有不懂的问题可以随时问我,工作不忙的时候希望可以给大家解惑。

相关文章

  • C语言学习|封装和模块化思想

    刚学习完C后,做的关于C的课程设计是在一个源文件中放了几百行代码,而且各个功能之间都是相互依赖的,这样就会很麻烦。...

  • cpp1 封装和this指针

    Cpp1 封装和this指针 封装 C语言和C++语言的区别 C++是对C的补充扩展,C原有的语法C++都支持,并...

  • c++一些面试题

    c++三大特性封装封装可以隐藏实现细节,使得代码模块化;封装是把成员变量和成员函数封装起来,对成员变量的访问只能通...

  • 浏览器数据库IndexDB

    1. 前言 最近刚入职在看新项目的代码,学习了很多新的代码封装思路和模块化的思想。而且也了解到了IndexedDB...

  • 刚初入社会的C语言程序员到底薪资如何?

    C/C++作为早期出现的结构化语言,层次清晰,便于按模块化方式 组织程序,易于调试和维护。C语言的表现能力和处理能...

  • iOS-tips

    OC语言的面向对象特性是通过封装c和c++实现的,编译器会将OC编译为c和c++,再讲c编译为汇编语言,最终转成机...

  • python学习(20) 网络编程

    python 网络编程和基本的C语言编程一样,效率不是很高,如果为了封装通信库建议采用C/C++做底层封装,采用e...

  • C语言-学OC的基础

    C是OC学习的基础,OC是从C衍生出来的,所以先学习C语言,主要学习编程语言的语法,积累一个编程思想 我搜到了一个...

  • 9.Objective-C之@Category类别小实例

    前言 1.小实例的问题需求和问题思路分析: 2.c语言模块化思想解决方法 3.Category类别的使用 4.开发...

  • 09.类

    面向对象语言的重头戏———类 我们知道C++是一门面向对象的语言,与面向过程的语言C不同的是C++的封装,继承和多...

网友评论

    本文标题:C语言学习|封装和模块化思想

    本文链接:https://www.haomeiwen.com/subject/duyzgqtx.html