最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

從匯編看c++中函數(shù)里面的static關鍵字的使用說明

 更新時間:2013年05月06日 10:22:42   作者:  
c++中的static關鍵字使得函數(shù)里面的局部變量的存活期不在局限于函數(shù)里面,而是變?yōu)樵谡麄€程序生命期里面都有效

下面從匯編語言看其原理.

下面是c++源代碼:

復制代碼 代碼如下:

void add() {
    static int i = 1;
    i++;
}
int main() {
   add();

}

下面是main對應的匯編碼
復制代碼 代碼如下:

; 5    : int main() {

    push    ebp
    mov    ebp, esp

; 6    :    add();

    call    ?add@@YAXXZ                ; 調用add

; 7    :   
; 8    : }

    xor    eax, eax
    pop    ebp
    ret    0


下面是add函數(shù)對應的匯編碼:
復制代碼 代碼如下:

; 1    : void add() {

    push    ebp
    mov    ebp, esp

; 2    :     static int i = 1;
; 3    :     i++;

    mov    eax, DWORD PTR ?i@?1??add@@YAXXZ@4HA;取變量i的值
    add    eax, 1;執(zhí)行加法
    mov    DWORD PTR ?i@?1??add@@YAXXZ@4HA, eax;存變量i的值

; 4    : }

    pop    ebp
    ret    0


可以看,不論是main函數(shù),還是add函數(shù)里面,我們都看不到為i分配存儲空間,也就是說,i不在他們的調用棧里面。

再看下面的匯編碼:

復制代碼 代碼如下:

_DATA    SEGMENT
?i@?1??add@@YAXXZ@4HA DD 01H                ; 為變量i聲明存儲空間
; Function compile flags: /Odtp
_DATA    ENDS

這條語句為i預先分配了存儲空間,并且在上面兩個函數(shù)匯編碼的外面定義。因此,函數(shù)里面由static關鍵字修飾的變量生命期存在于整個程序里面,但是,可見性依然只在add函數(shù)里面,在外面訪問不到.

相關文章

  • C++獲取指定目錄下的所有文件

    C++獲取指定目錄下的所有文件

    這篇文章主要為大家詳細介紹了C++獲取指定目錄下所有文件的相關代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • 如何寫出優(yōu)美的C語言代碼

    如何寫出優(yōu)美的C語言代碼

    今天小編就為大家分享一篇關于如何寫出優(yōu)美的C語言代碼,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • C++中的自增與自減

    C++中的自增與自減

    這篇文章主要介紹了C++中的自增與自減,自增與自減是C++當中兩個使用頻率非常高的運算符,不僅在循環(huán)當中用到,在日常的代碼當中也經(jīng)常使用,下面來看看文章得具體介紹
    2021-11-11
  • C語言命令行參數(shù)的使用詳解

    C語言命令行參數(shù)的使用詳解

    本文主要介紹了C語言命令行參數(shù)的使用詳解,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • MATLAB Delaunay算法提取離散點邊界的方法

    MATLAB Delaunay算法提取離散點邊界的方法

    這篇文章主要為大家詳細介紹了MATLAB Delaunay算法提取離散點邊界的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • 關于C++友元類的實現(xiàn)講解

    關于C++友元類的實現(xiàn)講解

    今天小編就為大家分享一篇關于關于C++友元類的實現(xiàn)講解,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • C語言實現(xiàn)大數(shù)據(jù)文件的內存映射機制

    C語言實現(xiàn)大數(shù)據(jù)文件的內存映射機制

    這篇文章主要介紹了C語言實現(xiàn)大數(shù)據(jù)文件的內存映射機制的相關資料,需要的朋友可以參考下
    2017-01-01
  • 深入講解C++數(shù)據(jù)類型轉換的相關函數(shù)的知識

    深入講解C++數(shù)據(jù)類型轉換的相關函數(shù)的知識

    這篇文章主要介紹了深入講解C++數(shù)據(jù)類型轉換的相關函數(shù)的知識,包括類型轉換運算符函數(shù)等內容,需要的朋友可以參考下
    2015-09-09
  • C++ lambda閉包消除類成員變量的解決思路

    C++ lambda閉包消除類成員變量的解決思路

    在面向對象編程中,類成員變量過多可能會造成干擾,可以采用函數(shù)式編程的思想,通過閉包和lambda表達式減少不必要的類成員,增強代碼的可控性和減少干擾,注意要正確使用mutable修飾符和值捕獲,以及合理安排lambda的初始化時機,感興趣的朋友跟隨小編一起看看吧
    2024-09-09
  • C++深入細致探究二叉搜索樹

    C++深入細致探究二叉搜索樹

    二叉搜索樹是以一棵二叉樹來組織的。每個節(jié)點是一個對象,包含的屬性有l(wèi)eft,right,p和key,其中,left指向該節(jié)點的左孩子,right指向該節(jié)點的右孩子,p指向該節(jié)點的父節(jié)點,key是它的值
    2022-05-05

最新評論

吉安县| 珠海市| 鹤山市| 秀山| 中西区| 马公市| 安多县| 巫山县| 万载县| 天祝| 哈巴河县| 乌什县| 汕头市| 南漳县| 长岭县| 开江县| 隆子县| 寿阳县| 庆安县| 博爱县| 奉节县| 简阳市| 分宜县| 嘉祥县| 连江县| 淄博市| 砀山县| 绥棱县| 南华县| 旺苍县| 秭归县| 嘉善县| 敦化市| 子长县| 旺苍县| 布尔津县| 玉龙| 泸州市| 扎鲁特旗| 桃园市| 长葛市|