中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Static局部變量與全局變量的區別是什么

發布時間:2021-08-02 15:23:20 來源:億速云 閱讀:150 作者:Leah 欄目:編程語言

這篇文章給大家介紹Static局部變量與全局變量的區別是什么,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

  Static局部變量與全局變量的區別?編譯后映射文件是否包含此類變量的地址?全局變量(外部變量)的說明之前再冠以static 就構成了靜 態的全局變量。全局變量本身就是靜態存儲方式, 靜態全局變量當然也是靜態存儲方式。這兩者在存儲方式上并無不同。這兩者的區別雖在于非靜態全局變量的作用域是整 個源程序, 當一個源程序由多個源文件組成時,非靜態的 全局變量在各個源文件中都是有效的。

      而靜態全局變量則 限制了其作用域,即只在定義該變量的源文件內有效, 在同一源程序的其它源文件中不能使用它。由于靜態全局 變量的作用域局限于一個源文件內,只能為該源文件內的 函數公用,因此可以避免在其它源文件中引起錯誤。


  從以上分析可以看出,把局部變量改變為靜態變量后是改變了它的存儲方式即改變了它的生存期。把全局變量改變為靜態變量后是改變了它的作用域,限制了它的使范圍。


  static 函數與普通函數作用域不同。僅在本文件。只在當前源文件中使用的函數應該說明為內部函數 (static),內部函數應該在當前源文件中說明和定義。對 于可在當前源文件以外使用的函數,應該在一個頭文件中說明,要使用這些函數的源文件要包含這個頭文件


  static 全局變量與普通的全局變量有什么區別:static 全局變量只初使化一次,防止在其他文件單元中被 引用;


  static 局部變量和普通局部變量有什么區別:static 局部變量只被初始化一次,下一次依據上一次結果值;


  static 函數與普通函數有什么區別:static 函數在存中只有一份,普通函數在每個被調用中維持一份拷貝程序的局部變量存在于(堆棧)中,全局變量存在于 (靜態區)中,動態申請數據存在于(堆)中。extern 全局變量、static 全局變量和 static 局部變量的生存期都是“永久”,區別只是可見域不同。extern 全局 變量可見區域是工程,static 全局變量可見區域是文件,而 static 局部變量的可見區域是塊。從代碼維護角度來看,對extern 變量的修改可能會影 響所有代碼,對 static 全局變量的修改可能影響一個文件 中的代碼,而對static 變量的修改 可能影響一個塊的代 碼;因此在選擇變量類型時,優先級是 static 局 部>static 全局>extern 全局。

      但它們有著共同的缺點:使 用 了這些類型變量的函數將是不可重入的,不是線程安全的。在 C/C++標準庫中有很多函數都使用了static 局部變量,目前的實現中都為它們提供了兩套代 碼,單線程版本 使用 static 變量而多線程版本使用“線程全局變量”,比如rand,strtok等。 一個進程可用內存空間為4G,可分在存放靜態數據,代碼,系統內存,堆,棧等。.活動記錄一般存放調用參數、返回地址等內容。堆和棧最大的區別在于 堆是由低地址向 高地址分配內存,而棧是由高向低。全局和靜態數據存放在全局數據區,其余的在棧中,用malloc 或new分配的內存位于堆中。一般來說棧在低地址,堆位于高地址

關于Static局部變量與全局變量的區別是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

台州市| 东乡县| 灵石县| 西昌市| 封丘县| 宾阳县| 呼玛县| 丹东市| 灵石县| 平乐县| 逊克县| 万盛区| 寿宁县| 蕉岭县| 新晃| 崇阳县| 天峨县| 阜康市| 高雄县| 锡林浩特市| 辛集市| 沁源县| 怀来县| 怀仁县| 中超| 简阳市| 田阳县| 永定县| 卓尼县| 麟游县| 老河口市| 宿迁市| 温宿县| 汤阴县| 搜索| 青神县| 甘南县| 绥江县| 滁州市| 两当县| 南召县|