91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

中江县| 苗栗县| 安丘市| 大邑县| 西宁市| 堆龙德庆县| 正阳县| 启东市| 西乡县| 东平县| 桐梓县| 凌海市| 邛崃市| 阿拉善盟| 开远市| 荆州市| 沙雅县| 九江县| 夏河县| 辛集市| 嘉兴市| 南昌市| 郧西县| 谷城县| 上思县| 巩留县| 建水县| 师宗县| 叙永县| 宁津县| 福州市| 保德县| 贵南县| 安徽省| 千阳县| 洪湖市| 道真| 平度市| 时尚| 平阴县| 名山县|