大一c語言必背編程題 C語言32個(gè)關(guān)鍵字里,哪些可以用來聲明定義變量?該注意些什么?
C語言32個(gè)關(guān)鍵字里,哪些可以用來聲明定義變量?該注意些什么?首先,從C語言的特點(diǎn)來看,它是一種靜態(tài)語言,所有變量都必須有一個(gè)類型,無論是基本類型,如int、char、float、double,還是s
C語言32個(gè)關(guān)鍵字里,哪些可以用來聲明定義變量?該注意些什么?
首先,從C語言的特點(diǎn)來看,它是一種靜態(tài)語言,所有變量都必須有一個(gè)類型,無論是基本類型,如int、char、float、double,還是structure、union、enumeration等用戶定義的類型,只要是type關(guān)鍵字,就可以用來定義變量。另外,還有一種叫做指針的變量類型,分為變量指針和函數(shù)指針。變量指針指向特定數(shù)據(jù)類型的地址,函數(shù)指針指向函數(shù)的入口地址??梢酝ㄟ^組合變量類型和*符號(hào)來聲明指針。這里需要注意的是,指針是一個(gè)遞歸定義,也就是說,指針可以指向指針,這有點(diǎn)尷尬。核心意思是指針可以一直指向。
函數(shù)指針類型的變量定義有點(diǎn)特殊。下面是一個(gè)示例:
definition:typedef void(*myfun)(int)
void funimp(int param){/*function content*/}
use:myfun=funimpmyfun(10)
總之,請(qǐng)記住定義變量的關(guān)鍵點(diǎn)必須有一個(gè)類型,這與Python和其他動(dòng)態(tài)語言不同。為了更好地了解程序的運(yùn)行狀態(tài),最好了解每種類型的變量所占用的內(nèi)存大小。這是非常重要的。許多錯(cuò)誤是由不同系統(tǒng)中變量占用的內(nèi)存大小不同造成的。例如,對(duì)于int類型,在32位系統(tǒng)中需要4個(gè)字節(jié),在64位系統(tǒng)中需要8個(gè)字節(jié)。此外,我們還應(yīng)該清楚內(nèi)存中數(shù)據(jù)的大小模式,即高位字節(jié)是第一位的還是狀態(tài)字節(jié)是第一位的。
C語言中的靜態(tài)變量?
Static關(guān)鍵字用于在C語言中聲明靜態(tài)局部變量。函數(shù):有時(shí)您希望函數(shù)中的局部變量的值在函數(shù)調(diào)用結(jié)束后不消失,而是保持其原始值,即它占用的存儲(chǔ)單元不會(huì)被釋放。下次再次調(diào)用函數(shù)時(shí),變量已經(jīng)有一個(gè)值(即上一次函數(shù)調(diào)用結(jié)束時(shí)的值)。此時(shí),應(yīng)該將局部變量指定為“static local variable”,并用關(guān)鍵字static聲明它。靜態(tài)存儲(chǔ)需要占用更多的內(nèi)存(長(zhǎng)期占用不會(huì)釋放,但不像動(dòng)態(tài)存儲(chǔ)。存儲(chǔ)單元可連續(xù)用于多個(gè)變量(以節(jié)省內(nèi)存),并降低程序的可讀性。因此,如果沒有必要,不要使用更多的靜態(tài)局部變量。
發(fā)現(xiàn)一個(gè)C語言BUG,定義int變量時(shí)靠近c(diǎn)har的變量會(huì)變成0,是什么原因?
許多開發(fā)人員都有過這種經(jīng)歷。當(dāng)他們被一些奇怪的問題弄得精疲力盡時(shí),他們開始懷疑開發(fā)環(huán)境、編譯器、運(yùn)行時(shí),甚至生命周期。是的,我也遇到過,但是我最終發(fā)現(xiàn)開發(fā)環(huán)境、編譯器、運(yùn)行時(shí)都有漏洞,中獎(jiǎng)概率太低,比中獎(jiǎng)概率低。問題還是我們自己的,但定位問題的過程比較曲折。
在這種情況下,變量的值是不確定的。它可以是任意值或0。
2. 變量在某個(gè)時(shí)間會(huì)被其他地方修改,例如通過指針修改,或者在調(diào)用函數(shù)時(shí)通過引用修改。這兩種方法在代碼級(jí)別可能不是很直觀,很容易被忽略。
所以受試者可以根據(jù)我說的情況來分析定位問題。