? 今天做牛客的題庫,遇到了c語言課上沒有講的關鍵字volatile,于是去學習了一下,并在此做總結(jié)方便之后的復習。
? volatile是一種類型修飾符 可以用來防止變量在編譯時被優(yōu)化。
? 我們知道內(nèi)存訪問速度不如寄存器與cache,在編譯器編譯時,會對程序進行優(yōu)化,將經(jīng)常訪問的數(shù)據(jù)放在寄存器,從而加快訪問速度,但這也帶來了一些問題,如你的這個變量被修改了,程序還是會按照寄存器的數(shù)據(jù)執(zhí)行而不是通過重新訪問速度更慢的內(nèi)存來獲取數(shù)據(jù)。
? 例如你有兩個條件語句,一個是等于0執(zhí)行,一個是等于1執(zhí)行,你創(chuàng)建了一個全局變量值為1,編譯器編譯時會優(yōu)化,只保留了等于1時的代碼塊,但是你的這個全局變量是可能被外部修改為0的。
? 而volatile就可以提醒編譯器,這個變量是會變的,在遇到與這個變量有關的操作時都要從內(nèi)存中重新讀取(例如當你將這個變量設為while循環(huán)判斷條件時,每次while循環(huán)都要重新從內(nèi)存讀取數(shù)據(jù)并判斷)。變量被修改的情況有:子進程對主進程的修改,中斷函數(shù)對主函數(shù)的修改,對硬件寄存器進行修改等。
你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
網(wǎng)站題目:知識補充(2)-volatile關鍵字-創(chuàng)新互聯(lián)
文章路徑:http://m.2m8n56k.cn/article16/dpojdg.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、外貿(mào)建站、面包屑導航、企業(yè)建站、做網(wǎng)站、定制網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容