您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關C++ static的作用是什么以及全局變量和局部變量有什么區別,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
(1) 修飾局部變量時,只初始化一次,延長了局部變量生命周期,直到程序結束才釋放。
(2)修飾全局變量,全局變量智能在本文件訪問,不能在其他文件訪問。
(3)修飾函數同修飾全局變量類似,只能在本文件調用,不能在其他文件調用。
(4)不想被釋放的時候,可用static修飾。
(5)考慮數據安全性,如當程序需使用全局變量時,應優先考慮static。
靜態全局變量:
(1)靜態變量包況后面的靜態局部變量,都在全局數據區分配內存。
(2)未經初始化的靜態全局變量會被程序自動出初始化為0.
(3)靜態全局變量在聲明它的整個文件都可見,本文件之外均不可見,更不可用。(因此,其中的優點是,在其他文件中可以定義相同名字的變量,不會發生沖突。)
靜態局部變量:
(1)同靜態全局變量(1)。
(2)靜態局部變量在程序執行到對象聲明處首次初始化,以后函數的調用不再初始化。
(3)靜態局部變量一般在聲明處初始化,如未顯示初始化,會被程序自動初始化為0.
(4)靜態局部變量始終駐留在全局數據區,直到程序運行結束。但其作用域為局部作用域,當其定義的語句和函數結束時,其作用域也結束。
static 修飾的變量存放在全局數據區的靜態變量區,包括全局靜態變量和局部靜態變量,都在全局數據區分配內存。初始化的時候自動初始化為 0。
1. 代碼段:主要是程序的代碼以及編譯時靜態鏈接進來的庫。這段內存大小在程序運行之前就已經確定,而且是只讀,可能存在一些常量,比如字符串常量。
2. 數據段:分為data和bss兩個段,表現為靜態內存段,data段存放已初始化的全局變量(靜態內存分配的變量和初始化全局變量)。bss段存放未初始化的全局變量,在內存中bss段被清零。
3. 堆 段:用于程序動態內存分配和管理,如何分配和管理由程序的開發者決定,大小不固定(跟您的機器內存有關系),可以動態伸縮。
4. 映射段:該內存區域存放鏈接其它動態程序庫的向量,共享內存映射向量等等。
5. 棧 段:棧是一種先進后出的數據結構,該段內存區域由程序在運行中自行管理,如:局部變量保存和撤除、函數調用相關等。
6. 輸入的環境變量和參數段:主要內存程序執行時的環境變量,輸入參數等等。
7. 就是系統區域。
關于C++ static的作用是什么以及全局變量和局部變量有什么區別就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。