靜態(tài)變量和常量的區(qū)別?
區(qū)別:
1、(本質(zhì))static是類型引用,const是實(shí)例引用。
2、(初始化)靜態(tài)變量的初始值必須是一個(gè)常量。靜態(tài)初始值默認(rèn)為0,而常量也默認(rèn)為0(嗎?)。
3、(賦值)靜態(tài)變量的值在運(yùn)行時(shí)可以更改賦值,而常量的值是不可改變的,運(yùn)行一開始已經(jīng)固定,之后修改會(huì)報(bào)錯(cuò)。
4、(內(nèi)存)靜態(tài)變量存放在全局?jǐn)?shù)據(jù)區(qū)中,伴隨著這個(gè)程序流程,能將此變量的值保留到下次調(diào)用,不過數(shù)據(jù)過大的靜態(tài)變量有可能造成內(nèi)存泄露。 而const常量算是一個(gè)普通的只讀變量,隨函數(shù)結(jié)束而結(jié)束。在C里,const常量總是會(huì)分配內(nèi)存,位于只讀數(shù)據(jù)段。在C++,如果const常量在沒有聲明為extern,那么就是一個(gè)編譯時(shí)的符號,不占用內(nèi)存。