標籤:使用 article 封裝 cpp 儲存類別 break 調用 print snippet
剛學習完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_INCLUDED
main.c
#include <stdio.h>#include "Pascal_triangle.h"int main(void){ int num; printf("請輸入資料:\n"); scanf("%d",&num); Pascal_triangle(num); return 0;}這樣做就實現了
楊輝三角的實現程式對外界的封住,
一個project中的其它源檔案中的函數不用瞭解楊輝三角函數裡面的詳細操作是怎樣進行的,僅僅須要使用模組中提供的介面函數就能夠了。這樣楊輝三角的實現模組就全然的獨立於其它的模組了。
所看到的:
Pascal_triangle.h標頭檔就是向外界提供一個實現楊輝三角的介面函數的聲明,這一點是非常重要的。
當這樣處理好一個源檔案之後。無論如何操作改動楊輝三角的實現函數,對其它的代碼沒有不論什麼影響。
可是有一點要注意:不要改動函數介面本身,由於一旦改動,其它代碼就可能會有大的改動
【C語言學習】封裝和模組化思想