溫馨提示×

溫馨提示×

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

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

C++ static的作用是什么以及全局變量和局部變量有什么區(qū)別

發(fā)布時間:2021-09-26 10:13:03 來源:億速云 閱讀:208 作者:柒染 欄目:開發(fā)技術(shù)

這篇文章將為大家詳細講解有關(guān)C++ static的作用是什么以及全局變量和局部變量有什么區(qū)別,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

    1.static的作用

    (1) 修飾局部變量時,只初始化一次,延長了局部變量生命周期,直到程序結(jié)束才釋放。

    (2)修飾全局變量,全局變量智能在本文件訪問,不能在其他文件訪問。

    (3)修飾函數(shù)同修飾全局變量類似,只能在本文件調(diào)用,不能在其他文件調(diào)用。

    (4)不想被釋放的時候,可用static修飾。

    (5)考慮數(shù)據(jù)安全性,如當(dāng)程序需使用全局變量時,應(yīng)優(yōu)先考慮static。

    2.staic全局變量和局部變量的區(qū)別,存儲位置?

    區(qū)別:

    靜態(tài)全局變量:

    (1)靜態(tài)變量包況后面的靜態(tài)局部變量,都在全局數(shù)據(jù)區(qū)分配內(nèi)存。

    (2)未經(jīng)初始化的靜態(tài)全局變量會被程序自動出初始化為0.

    (3)靜態(tài)全局變量在聲明它的整個文件都可見,本文件之外均不可見,更不可用。(因此,其中的優(yōu)點是,在其他文件中可以定義相同名字的變量,不會發(fā)生沖突。)

    靜態(tài)局部變量:

    (1)同靜態(tài)全局變量(1)。

    (2)靜態(tài)局部變量在程序執(zhí)行到對象聲明處首次初始化,以后函數(shù)的調(diào)用不再初始化。

    (3)靜態(tài)局部變量一般在聲明處初始化,如未顯示初始化,會被程序自動初始化為0.

    (4)靜態(tài)局部變量始終駐留在全局數(shù)據(jù)區(qū),直到程序運行結(jié)束。但其作用域為局部作用域,當(dāng)其定義的語句和函數(shù)結(jié)束時,其作用域也結(jié)束。

    static 修飾的變量存放在全局數(shù)據(jù)區(qū)的靜態(tài)變量區(qū),包括全局靜態(tài)變量和局部靜態(tài)變量,都在全局數(shù)據(jù)區(qū)分配內(nèi)存。初始化的時候自動初始化為 0。

    C++ static的作用是什么以及全局變量和局部變量有什么區(qū)別

    我們自底向上的方式進行講解:

    1. 代碼段:主要是程序的代碼以及編譯時靜態(tài)鏈接進來的庫。這段內(nèi)存大小在程序運行之前就已經(jīng)確定,而且是只讀,可能存在一些常量,比如字符串常量。

    2. 數(shù)據(jù)段:分為data和bss兩個段,表現(xiàn)為靜態(tài)內(nèi)存段,data段存放已初始化的全局變量(靜態(tài)內(nèi)存分配的變量和初始化全局變量)。bss段存放未初始化的全局變量,在內(nèi)存中bss段被清零。

    3. 堆 段:用于程序動態(tài)內(nèi)存分配和管理,如何分配和管理由程序的開發(fā)者決定,大小不固定(跟您的機器內(nèi)存有關(guān)系),可以動態(tài)伸縮。

    4. 映射段:該內(nèi)存區(qū)域存放鏈接其它動態(tài)程序庫的向量,共享內(nèi)存映射向量等等。

    5. 棧 段:棧是一種先進后出的數(shù)據(jù)結(jié)構(gòu),該段內(nèi)存區(qū)域由程序在運行中自行管理,如:局部變量保存和撤除、函數(shù)調(diào)用相關(guān)等。

    6. 輸入的環(huán)境變量和參數(shù)段:主要內(nèi)存程序執(zhí)行時的環(huán)境變量,輸入?yún)?shù)等等。

    7. 就是系統(tǒng)區(qū)域。

    關(guān)于C++ static的作用是什么以及全局變量和局部變量有什么區(qū)別就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

    向AI問一下細節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI