十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
儲(chǔ)存類:變量在定義時(shí)的儲(chǔ)存類型對其在程序中的生命周期、連接屬性及作用域有很大的關(guān)聯(lián)
鏈接屬性: 無連接、內(nèi)連接、外鏈接
關(guān)鍵字:
1、auto 用于修飾局部變量,在定義局部變量時(shí),將其定義在棧上。
普通局部變量存放在棧上,因?yàn)闂?nèi)存的特性決定了普通局部變量定時(shí)如果未初始化其的值是隨機(jī)的,因?yàn)闂?nèi)存是臟的,變量在釋放后并未對其初始化,且棧內(nèi)存被廣泛運(yùn)用,也就造就了普通變量的特性。
普通局部變量的生命周期是臨時(shí),可從其存放于棧上看出其臨時(shí)的特性。
普通局部變量的作用域?yàn)榇a塊中“{}",C89與C99略有不同,普通局部變量在代碼塊的首部被定義,在代碼塊中被運(yùn)用,在代碼塊結(jié)尾處被釋放。
2、static 該關(guān)鍵字有兩種作用,1、用于修飾靜態(tài)局部變量 2、用于修飾全局變量或者函數(shù),
且這兩種作用之間無任何的相關(guān)性,相互獨(dú)立的存在。
static修飾的局部變量為靜態(tài)局部變量,其與普通局部變量不同,并不存放在棧上,而是存放在數(shù)據(jù)段/bss段(顯式初始化為非0則在數(shù)據(jù)段,顯式初始化為0或未顯示初始化則在bss段)上,同樣的因其存放在數(shù)據(jù)段上也就決定了其的生命周期并不是臨時(shí)的而是永久的。但靜態(tài)局部變量與普通局部變量也存在相似性,靜態(tài)局部變量的作用域仍為代碼塊,且其連接屬性依舊為無連接。
static修飾的全部變量/函數(shù)為靜態(tài)全局變量/函數(shù),其作用域的文件范圍,生命周期為永久,連接屬性因其只能在自身的文件內(nèi)部被調(diào)用所以連接屬性為內(nèi)連接。
3、register 該關(guān)鍵字修飾的變量分配于寄存器中,降存放于寄存器中的變量可大大提高讀取速度,但寄存器是有限的,
且經(jīng)常性的被系統(tǒng)本身使用,故謹(jǐn)慎使用該關(guān)鍵字。
4、extern 該關(guān)鍵字用來全局聲明變量/函數(shù),聲明后的全局變量及函數(shù)可在別的文件中被調(diào)用(前提是包含了該文件的.h文件),
作用域變更為全文件,鏈接屬性為外鏈接。
5、volatile 其意思為可變的,在C語言中定義變量時(shí)加上該關(guān)鍵字,即可告訴編譯器該變量可被編譯器以外的代碼改變,編譯器之內(nèi)的意思是變量的值的改變是代碼的作用,編譯器之外的改變就是這個(gè)改變不是代碼造成的,或者不是當(dāng)前代碼造成的,編譯器在編譯當(dāng)前代碼時(shí)無法預(yù)知。譬如在中斷中對變量的操作就必須加上該關(guān)鍵字,防止編譯器對代碼進(jìn)行了錯(cuò)誤的優(yōu)化。
6、restrict restrict只用來修飾指針,不能修飾普通變量。
7、typedef
存儲(chǔ)類決定生命周期,作用域決定鏈接屬性
宏和inline函數(shù)的鏈接屬性為無連接。
公司專注于為企業(yè)提供網(wǎng)站設(shè)計(jì)、成都網(wǎng)站設(shè)計(jì)、微信公眾號開發(fā)、成都商城網(wǎng)站開發(fā),微信平臺(tái)小程序開發(fā),軟件定制網(wǎng)站設(shè)計(jì)等一站式互聯(lián)網(wǎng)企業(yè)服務(wù)。憑借多年豐富的經(jīng)驗(yàn),我們會(huì)仔細(xì)了解各客戶的需求而做出多方面的分析、設(shè)計(jì)、整合,為客戶設(shè)計(jì)出具風(fēng)格及創(chuàng)意性的商業(yè)解決方案,創(chuàng)新互聯(lián)建站更提供一系列網(wǎng)站制作和網(wǎng)站推廣的服務(wù)。