怎么監(jiān)控局部變量 局部變量、全局變量、外部變量個(gè)采用什么存儲(chǔ)方式?
局部變量、全局變量、外部變量個(gè)采用什么存儲(chǔ)方式?變量的類(lèi)別:按范圍可分為全局變量和局部變量。按照生命周期可以分為靜態(tài)存儲(chǔ)模式和動(dòng)態(tài)存儲(chǔ)模式,具體來(lái)說(shuō)可以分為auto、static、register和e
局部變量、全局變量、外部變量個(gè)采用什么存儲(chǔ)方式?
變量的類(lèi)別:按范圍可分為全局變量和局部變量。按照生命周期可以分為靜態(tài)存儲(chǔ)模式和動(dòng)態(tài)存儲(chǔ)模式,具體來(lái)說(shuō)可以分為auto、static、register和extern。
靜態(tài)存儲(chǔ)模式是指在程序運(yùn)行過(guò)程中分配固定存儲(chǔ)空間的模式,動(dòng)態(tài)存儲(chǔ)模式是指在程序運(yùn)行過(guò)程中根據(jù)需要?jiǎng)討B(tài)分配存儲(chǔ)空間的模式。
每個(gè)變量有兩個(gè)屬性:作用域和存儲(chǔ)類(lèi)別,用來(lái)描述一個(gè)變量。這些不同類(lèi)型的變量和存儲(chǔ)位置的關(guān)系如下:外部變量(全局變量),靜態(tài)外部變量和靜態(tài)局部變量存儲(chǔ)在靜態(tài)存儲(chǔ)區(qū)。
自動(dòng)局部變量(局部變量默認(rèn)為自動(dòng)局部變量)和函數(shù)參數(shù)存儲(chǔ)在動(dòng)態(tài)存儲(chǔ)區(qū),靜態(tài)存儲(chǔ)區(qū)和動(dòng)態(tài)存儲(chǔ)區(qū)都屬于內(nèi)存中的用戶(hù)區(qū)。但是,寄存器變量存儲(chǔ)在CPU寄存器中,而不是存儲(chǔ)在內(nèi)存中。首先解釋幾個(gè)與作用域相關(guān)的性質(zhì):
局部變量:函數(shù)內(nèi)部定義的變量是內(nèi)部變量,只在這個(gè)函數(shù)范圍內(nèi)有效,也就是說(shuō)只能在這個(gè)函數(shù)內(nèi)部使用,不能在這個(gè)函數(shù)外部使用。這種類(lèi)型的變量稱(chēng)為 "局部變量和。
全局變量:在函數(shù)外部定義的變量,可以被這個(gè)源文件中的其他函數(shù)共享。有效范圍是從定義變量的位置到源文件的結(jié)尾。這種類(lèi)型的變量稱(chēng)為a "全局變量和。接下來(lái),解釋與存儲(chǔ)類(lèi)型相關(guān)的幾個(gè)屬性:
Atuo:聲明局部變量時(shí),如果沒(méi)有指定static,默認(rèn)都是auto。這些變量是動(dòng)態(tài)分配的存儲(chǔ)空間,而數(shù)據(jù)是存儲(chǔ)在動(dòng)態(tài)存儲(chǔ)區(qū)。
Static:在聲明局部變量時(shí),使用關(guān)鍵字static將局部變量指定為 "靜態(tài)局部變量 ",使其在函數(shù)調(diào)用后不會(huì)消失,而是保持原來(lái)的值,即占用的存儲(chǔ)單元不會(huì)被釋放。在下一次函數(shù)調(diào)用中,變量的現(xiàn)有值是最后一次函數(shù)調(diào)用結(jié)束時(shí)的值。寄存器:在聲明動(dòng)態(tài)局部變量或函數(shù)參數(shù)時(shí),可以將變量聲明為寄存器,這樣編譯器系統(tǒng)會(huì)為變量分配一個(gè)寄存器而不是內(nèi)存空間,這樣可以提高頻繁調(diào)用某些局部變量的程序的性能。
(寄存器運(yùn)算速度比內(nèi)存快很多)
c語(yǔ)言中局部變量可以同名么?
在C語(yǔ)言中,作用域相同的局部變量不能同名。因此,在不同的作用域中,局部變量可能具有相同的名稱(chēng)。1功能不同。不同的函數(shù),局部變量完全無(wú)關(guān),自然可以用同一個(gè)名字。
2在同一個(gè)函數(shù)中,但是作用域不同。局部變量的范圍是定義的位置,以大括號(hào)結(jié)束。所以只要兩個(gè)局部變量屬于不同的大括號(hào),它們就可以同名。
比如這里,第一個(gè)A的范圍包括第二個(gè)和第三個(gè),后兩個(gè)的范圍無(wú)關(guān)緊要。三A 屬于三個(gè)不同的大括號(hào),可以有相同的名稱(chēng)。