static在C和C++语言中的作用
在C語(yǔ)言中static的作用如下
第一、在修飾變量的時(shí)候,static修飾的靜態(tài)局部變量只執(zhí)行一次,而且延長(zhǎng)了局部變量的生命周期,直到程序運(yùn)行結(jié)束以后才釋放。?
第二、static修飾全局變量的時(shí)候,這個(gè)全局變量只能在本文件中訪問,不能在其它文件中訪問,即便是extern外部聲明也不可以。?
第三、static修飾一個(gè)函數(shù),則這個(gè)函數(shù)的只能在本文件中調(diào)用,不能被其他文件調(diào)用。Static修飾的局部變量存放在全局?jǐn)?shù)據(jù)區(qū)的靜態(tài)變量區(qū)。初始化的時(shí)候自動(dòng)初始化為0;?
(1)不想被釋放的時(shí)候,可以使用static修飾。比如修飾函數(shù)中存放在棧空間的數(shù)組。如果不想讓這個(gè)數(shù)組在函數(shù)調(diào)用結(jié)束釋放可以使用static修飾?
(2)考慮到數(shù)據(jù)安全性(當(dāng)程想要使用全局變量的時(shí)候應(yīng)該先考慮使用static)
在C++中static關(guān)鍵字除了具有C中的作用還有在類中的使用?
在類中,static可以用來(lái)修飾靜態(tài)數(shù)據(jù)成員和靜態(tài)成員方法?
靜態(tài)數(shù)據(jù)成員?
(1)靜態(tài)數(shù)據(jù)成員可以實(shí)現(xiàn)多個(gè)對(duì)象之間的數(shù)據(jù)共享,它是類的所有對(duì)象的共享成員,它在內(nèi)存中只占一份空間,如果改變它的值,則各對(duì)象中這個(gè)數(shù)據(jù)成員的值都被改變。?
(2)靜態(tài)數(shù)據(jù)成員是在程序開始運(yùn)行時(shí)被分配空間,到程序結(jié)束之后才釋放,只要類中指定了靜態(tài)數(shù)據(jù)成員,即使不定義對(duì)象,也會(huì)為靜態(tài)數(shù)據(jù)成員分配空間。?
(3)靜態(tài)數(shù)據(jù)成員可以被初始化,但是只能在類體外進(jìn)行初始化,若為對(duì)靜態(tài)數(shù)據(jù)成員賦初值,則編譯器會(huì)自動(dòng)為其初始化為0?
(4)靜態(tài)數(shù)據(jù)成員既可以通過對(duì)象名引用,也可以通過類名引用。
靜態(tài)成員函數(shù)?
(1)靜態(tài)成員函數(shù)和靜態(tài)數(shù)據(jù)成員一樣,他們都屬于類的靜態(tài)成員,而不是對(duì)象成員。?
(2)非靜態(tài)成員函數(shù)有this指針,而靜態(tài)成員函數(shù)沒有this指針。?
(3)靜態(tài)成員函數(shù)主要用來(lái)方位靜態(tài)數(shù)據(jù)成員而不能訪問非靜態(tài)成員。
總結(jié)
以上是生活随笔為你收集整理的static在C和C++语言中的作用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CPU 以字节为单位编址,而 C 语言指
- 下一篇: IAR EW6.30版本下建立STM32