剛學(xué)習(xí)完C后,做的關(guān)于C的課程設(shè)計(jì)是在一個(gè)源文件中放了幾百行代碼,而且各個(gè)功能之間都是相互依賴的,這樣就會(huì)很麻煩。因?yàn)楫?dāng)我要修改某個(gè)地方的時(shí)候,就會(huì)牽連著要修改喝多的地方。而在實(shí)際的程序設(shè)計(jì)中,這也是不可取的。因此,模塊化和封裝的思想就顯得很重要了?。。?/p>
static變量
static變量的一個(gè)顯著的作用就是可以實(shí)現(xiàn)一個(gè)模塊的封裝。
static存儲(chǔ)類別的特性決定了static聲明的全局變量只能被本源文件的函數(shù)引用。當(dāng)在一個(gè)源文件中定義一個(gè)static全局變量后,其他文件就不能通過(guò)使用“extern”關(guān)鍵詞來(lái)引用該全局變量,而只能通過(guò)該源文件提供的接口函數(shù)來(lái)訪問(wèn)這個(gè)全局變量。
實(shí)例
我寫(xiě)了一個(gè)簡(jiǎn)單的實(shí)現(xiàn)楊輝三角的程序。其中,定義了一個(gè)靜態(tài)全局變量數(shù)組a[100][100],然后后面的函數(shù)就是對(duì)該數(shù)組的一些操作。而該源文件之外的函數(shù)就只能夠通過(guò)調(diào)用這些函數(shù)來(lái)完成對(duì)數(shù)組的操作。
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("請(qǐng)輸入數(shù)據(jù):\n");
8. scanf("%d",&num);
9. Pascal_triangle(num);
10. return 0;
11. }
這樣做就實(shí)現(xiàn)了楊輝三角的實(shí)現(xiàn)程序?qū)ν饨绲姆庾?,一個(gè)工程中的其他源文件里的函數(shù)不用了解楊輝三角函數(shù)里面的具體操作是如何進(jìn)行的,只需要使用模塊中提供的接口函數(shù)就可以了。這樣楊輝三角的實(shí)現(xiàn)模塊就完全的獨(dú)立于其他的模塊了。如圖所示:
Pascal_triangle.h頭文件就是向外界提供一個(gè)實(shí)現(xiàn)楊輝三角的接口函數(shù)的聲明,這一點(diǎn)是很重要的。
當(dāng)這樣處理好一個(gè)源文件之后,不管怎樣操作修改楊輝三角的實(shí)現(xiàn)函數(shù),對(duì)其他的代碼沒(méi)有任何影響。但是有一點(diǎn)要注意:不要修改函數(shù)接口本身,因?yàn)橐坏┬薷模渌a就可能會(huì)有大的改動(dòng)
-
封裝
+關(guān)注
關(guān)注
128文章
8501瀏覽量
144789 -
C語(yǔ)言
+關(guān)注
關(guān)注
180文章
7630瀏覽量
140363 -
static
+關(guān)注
關(guān)注
0文章
34瀏覽量
10613
原文標(biāo)題:C語(yǔ)言學(xué)習(xí)|封裝和模塊化思想
文章出處:【微信號(hào):mcuworld,微信公眾號(hào):嵌入式資訊精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
強(qiáng)大的matlab:在類中實(shí)現(xiàn)static成員變量 (轉(zhuǎn)帖)
一個(gè)被static 修飾的變量在函數(shù)中賦值問(wèn)題
static的全局變量與局部變量的使用,看完你就懂了
c語(yǔ)言static的作用
C語(yǔ)言register變量和extern及static等知識(shí)總結(jié)
C語(yǔ)言關(guān)鍵字static有哪些絕妙用途

分析如何遠(yuǎn)離漫天飛舞的全局變量
由static來(lái)談?wù)?b class='flag-5'>模塊封裝

為什么C++單例模式不能直接全部使用static變量和static函數(shù)呢?
C語(yǔ)言的static究竟限制了誰(shuí)?介紹一種繞開(kāi)static限制的方法

Java中對(duì)static關(guān)鍵詞的介紹

static關(guān)鍵字的三種用法

評(píng)論