色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于static變量來實現一個模塊的封裝

5RJg_mcuworld ? 2018-01-05 10:54 ? 次閱讀

剛學習完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. }

這樣做就實現了楊輝三角的實現程序對外界的封住,一個工程中的其他源文件里的函數不用了解楊輝三角函數里面的具體操作是如何進行的,只需要使用模塊中提供的接口函數就可以了。這樣楊輝三角的實現模塊就完全的獨立于其他的模塊了。如圖所示:

基于static變量來實現一個模塊的封裝

Pascal_triangle.h頭文件就是向外界提供一個實現楊輝三角的接口函數的聲明,這一點是很重要的。

當這樣處理好一個源文件之后,不管怎樣操作修改楊輝三角的實現函數,對其他的代碼沒有任何影響。但是有一點要注意:不要修改函數接口本身,因為一旦修改,其他代碼就可能會有大的改動

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 封裝
    +關注

    關注

    126

    文章

    7873

    瀏覽量

    142894
  • C語言
    +關注

    關注

    180

    文章

    7604

    瀏覽量

    136694
  • static
    +關注

    關注

    0

    文章

    33

    瀏覽量

    10366

原文標題:C語言學習|封裝和模塊化思想

文章出處:【微信號:mcuworld,微信公眾號:嵌入式資訊精選】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    強大的matlab:在類中實現static成員變量 (轉帖)

    不需要使用MATLAB的類定義了。可是如果應用MATLAB開發具有工程應用型的程序,使用面向對象編程會具有不可比擬的優勢。懂C++的朋友應該都知道,C++有static成員,static
    發表于 03-07 10:42

    static 修飾的變量在函數中賦值問題

    ,即將退出函數(在下面1處)step 的值莫名其妙的變回2,step變量只有這個地方使用,這個是什么問題???大神們幫忙分析下什么問題!!!!!如下程序:void display(){static
    發表于 12-15 09:10

    static的全局變量與局部變量的使用,看完你就懂了

    時,編譯器為它在棧上分配空間,函數在棧上分配的空間在此函數執行結束時會釋放掉,這樣就產生了問題: 如果想將函數中此變量的值保存至下次調用時,如何
    發表于 06-27 08:54

    static作用(修飾函數、局部變量、全局變量

    詳細介紹了static作用(修飾函數、局部變量、全局變量)的用法
    發表于 11-17 10:30 ?4次下載

    C語言static作用

      在C語言中,static的字面意思很容易把我們導入歧途,其實它的作用有三條。當我們同時編譯多個文件時,所有未加static前綴的全局變量和函數都具有全局可見性。
    發表于 09-18 10:26 ?8次下載

    c語言static的作用

    全局變量只能在本文件中訪問,不能在其它文件中訪問,即便是extern外部聲明也不可以。第三、static修飾函數,則這個函數的只能在本文件中調用,不能被其他文件調用。
    發表于 11-03 09:36 ?1.5w次閱讀

    C語言register變量和extern及static等知識總結

    register變量必須是單個的值,并且其長度應小于或等于整型的長度。但是,有些機器的寄存器也能存放浮點數。 register變量可能不存放在內存中,所以不能用取址符運算符 。 只
    發表于 11-21 10:20 ?5次下載

    C語言關鍵字static有哪些絕妙用途

    為什么要說static妙,它確實是妙,在軟件開發或者單片機開發過程中,大家總以為static就是靜態變量,在
    發表于 07-18 17:38 ?1次下載
    C語言關鍵字<b class='flag-5'>static</b>有哪些絕妙用途

    分析如何遠離漫天飛舞的全局變量

    來源:嵌入式大雜燴 前篇 《由static談談模塊封裝》 基本實現了對外隱藏屬性,隱藏局部模塊
    的頭像 發表于 09-15 13:49 ?1636次閱讀

    static談談模塊封裝

    static的用法對于很多剛剛開始接觸開發的朋友來說,可能沒理解其真正的用途,雖說這個是老生常談的話題,但這也是高頻面試要點,所以本...
    發表于 01-26 18:00 ?0次下載
    由<b class='flag-5'>static</b><b class='flag-5'>來</b>談談<b class='flag-5'>模塊</b><b class='flag-5'>封裝</b>

    為什么C++單例模式不能直接全部使用static變量static函數呢?

    通過getInstance()函數獲取單例對象,這種模式的關鍵之處不是在于強迫你用函數來獲取對象。關鍵之處是讓static對象定義在函數內部,變成局部static變量。看下這種實現方式
    的頭像 發表于 06-05 14:14 ?1566次閱讀

    Static變量和Local變量的區別

    變量可以分為3類,即Static、Automatic、和Local。如下表所示。
    的頭像 發表于 10-12 09:35 ?1384次閱讀

    C語言的static究竟限制了誰?介紹種繞開static限制的方法

    大佬們,問比較低智問題,static修飾的變量不是只能被當前文件所調用嗎?為什么這里在其他.c文件可以調用get_board_led_opr這個函數獲取board_demo_led
    的頭像 發表于 07-28 15:10 ?1170次閱讀
    C語言的<b class='flag-5'>static</b>究竟限制了誰?介紹<b class='flag-5'>一</b>種繞開<b class='flag-5'>static</b>限制的方法

    Java中對static關鍵詞的介紹

    static 是Java的關鍵字,可以用來修飾成員變量、修飾成員方法、構造靜態代碼塊、實現靜態導包以及
    的頭像 發表于 10-11 15:26 ?477次閱讀
    Java中對<b class='flag-5'>static</b>關鍵詞的介紹

    static關鍵字的三種用法

    (StaticVariables):在C語言中,使用`static`關鍵字聲明靜態變量種常見的用法,它具有以下主要作用:1.生存期延長:靜態
    的頭像 發表于 11-10 08:00 ?516次閱讀
    <b class='flag-5'>static</b>關鍵字的三種用法
    主站蜘蛛池模板: 国产午夜不卡| 好色女博士| 亚洲日韩成人| free乌克兰性xxxxhd| 极品虎白在线观看| 日本久久精品毛片一区随边看| 亚洲视频中文字幕| 丰满五十老女人性视频| 久久久欧美国产精品人妻噜噜| 色噜噜视频影院| 国产亚洲精品视频亚洲香蕉视| 蜜芽tv在线www| 亚洲日本国产综合高清| 国产成人综合网在线观看| 内射少妇36P亚洲区| 亚洲欧美成人在线| 国产精品高潮AV久久无码| 女子扒开腿让男生桶爽| 在线免费观看亚洲视频| 国产色精品久久人妻无码| 日本午夜精品一区二区三区电影 | 涩涩免费网站| 成人国产AV精品久久久久| 欧美白人战黑吊| 真人做受120分钟免费看| 好男人在线视频| 亚洲视频免费看| 国产私拍福利精品视频| 天美传媒果冻传媒入口视频| 成人做视频免费| 肉色欧美久久久久久久蜜桃| Zoofilivideo人馿交| 欧美性FREE玩弄少妇| 成人a毛片久久免费播放| 青春草久久| 国产成人aaa在线视频免费观看| 色色色999| 国产亚洲精品久久久久久久| 亚洲AV国产精品无码精| av先锋影音资源男人站| 黄色三级网络|