剛學習完C后,做的關于C的課程設計是在一個源文件中放了幾百行代碼,而且各個功能之間都是相互依賴的,這樣就會很麻煩。因為當我要修改某個地方的時候,就會牽連著要修改喝多的地方。而在實際的程序設計中,這也是不可取的。因此,模塊化和封裝的思想就顯得很重要了!!!
static變量
static變量的一個顯著的作用就是可以實現一個模塊的封裝。
static存儲類別的特性決定了static聲明的全局變量只能被本源文件的函數引用。當在一個源文件中定義一個static全局變量后,其他文件就不能通過使用“extern”關鍵詞來引用該全局變量,而只能通過該源文件提供的接口函數來訪問這個全局變量。
實例
我寫了一個簡單的實現楊輝三角的程序。其中,定義了一個靜態全局變量數組a[100][100],然后后面的函數就是對該數組的一些操作。而該源文件之外的函數就只能夠通過調用這些函數來完成對數組的操作。
Pascal_triangle.c
[cpp] view plain copy
1. #include
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
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頭文件就是向外界提供一個實現楊輝三角的接口函數的聲明,這一點是很重要的。
當這樣處理好一個源文件之后,不管怎樣操作修改楊輝三角的實現函數,對其他的代碼沒有任何影響。但是有一點要注意:不要修改函數接口本身,因為一旦修改,其他代碼就可能會有大的改動
-
封裝
+關注
關注
126文章
7873瀏覽量
142894 -
C語言
+關注
關注
180文章
7604瀏覽量
136694 -
static
+關注
關注
0文章
33瀏覽量
10366
原文標題:C語言學習|封裝和模塊化思想
文章出處:【微信號:mcuworld,微信公眾號:嵌入式資訊精選】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論