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