1) 在函數(shù)體,一個(gè)被聲明為靜態(tài)的變量在這一函數(shù)被調(diào)用過(guò)程中維持其值不變。
成都創(chuàng)新互聯(lián)公司專(zhuān)業(yè)為企業(yè)提供弋陽(yáng)網(wǎng)站建設(shè)、弋陽(yáng)做網(wǎng)站、弋陽(yáng)網(wǎng)站設(shè)計(jì)、弋陽(yáng)網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、弋陽(yáng)企業(yè)網(wǎng)站模板建站服務(wù),十多年弋陽(yáng)做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
2) 在模塊內(nèi)(但在函數(shù)體外),一個(gè)被聲明為靜態(tài)的變量可以被模塊內(nèi)所用函數(shù)訪(fǎng)問(wèn),但不能被模塊外其它函數(shù)訪(fǎng)問(wèn)。它是一個(gè)本地的全局變量。
3) 在模塊內(nèi),一個(gè)被聲明為靜態(tài)的函數(shù)只可被這一模塊內(nèi)的其它函數(shù)調(diào)用。那就是,這個(gè)函數(shù)被限制在聲明它的模塊的本地范圍內(nèi)使用。
1、修飾變量
變量分為局部和全局變量,但是都存于內(nèi)存的靜態(tài)區(qū)。靜態(tài)全局變量的作用域僅局限于變量被定義的文件中,其他文件即使使用extern也沒(méi)法使用,其范圍準(zhǔn)確的說(shuō)是從定義之初開(kāi)始,到文件結(jié)尾處結(jié)束。在其前面定義的代碼行也不能使用。
靜態(tài)局部變量,在函數(shù)體里面定義的,就只能在這個(gè)函數(shù)里用了,同一個(gè)文檔中的其他函數(shù)也用不了。由于被static 修飾的變量總是存在內(nèi)存的靜態(tài)區(qū),所以即使這個(gè)函數(shù)運(yùn)行結(jié)束,這個(gè)靜態(tài)變量的值還是不會(huì)被銷(xiāo)毀,函數(shù)下次使用時(shí)仍然能用到這個(gè)值。
2、修飾函數(shù)
函數(shù)前加static 使得函數(shù)成為靜態(tài)函數(shù)。但此處“static”的含義不是指存儲(chǔ)方式,而是指對(duì)函數(shù)的作用域僅局限于本文件(所以又稱(chēng)內(nèi)部函數(shù))。使用內(nèi)部函數(shù)的好處是:不同的人編寫(xiě)不同的函數(shù)時(shí),不用擔(dān)心自己定義的函數(shù),是否會(huì)與其它文件中的函數(shù)同名。
關(guān)鍵字static 有著不尋常的歷史。起初,在C 中引入關(guān)鍵字static 是為了表示退出一個(gè)塊后仍然存在的局部變量。隨后,static 在C 中有了第二種含義:用來(lái)表示不能被其它文件訪(fǎng)問(wèn)的全局變量和函數(shù)。為了避免引入新的關(guān)鍵字,所以仍使用static 關(guān)鍵字來(lái)表示這第二種含義。
static在c語(yǔ)言中是“靜態(tài)”的意思,用于在函數(shù)中聲明“靜態(tài)變量”用,在每一次調(diào)用后,該變量并不在函數(shù)返回時(shí)立即釋放,變量中保存的值,可以保留到下一次調(diào)用時(shí)繼續(xù)有效。
在C語(yǔ)言中,static關(guān)鍵字的作用如下:
1、在修飾變量的時(shí),static修飾的靜態(tài)局部變量只執(zhí)行一次,而且延長(zhǎng)了局部變量的生命周期,直到程序運(yùn)行結(jié)束以后才釋放。
2、static修飾全局變量的時(shí),這個(gè)全局變量只能在本文件中訪(fǎng)問(wèn),不能在其它文件中訪(fǎng)問(wèn),即便是extern外部聲明也不可以。
3、static修飾一個(gè)函數(shù),則這個(gè)函數(shù)的只能在本文件中調(diào)用,不能被其他文件調(diào)用。Static修飾的局部變量存放在全局?jǐn)?shù)據(jù)區(qū)的靜態(tài)變量區(qū)。
擴(kuò)展資料:
static關(guān)鍵字在C語(yǔ)言、C++、java中的作用有著相似之處,但也存在差異:
一、C++的static用法:
1、面向過(guò)程程序設(shè)計(jì)中的static和面向?qū)ο蟪绦蛟O(shè)計(jì)中的static。前者應(yīng)用于普通變量和函數(shù),不涉及類(lèi);后者主要說(shuō)明static在類(lèi)中的作用。
2、在類(lèi)中,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ù)共享,它是類(lèi)的所有對(duì)象的共享成員,它在內(nèi)存中只占一份空間,如果改變它的值,則各對(duì)象中這個(gè)數(shù)據(jù)成員的值都被改變。
(2)靜態(tài)數(shù)據(jù)成員是在程序開(kāi)始運(yùn)行時(shí)被分配空間,到程序結(jié)束之后才釋放,只要類(lèi)中指定了靜態(tài)數(shù)據(jù)成員,即使不定義對(duì)象,也會(huì)為靜態(tài)數(shù)據(jù)成員分配空間。
(3)靜態(tài)數(shù)據(jù)成員既可以通過(guò)對(duì)象名引用,也可以通過(guò)類(lèi)名引用。
靜態(tài)成員函數(shù)
(1)靜態(tài)成員函數(shù)和靜態(tài)數(shù)據(jù)成員一樣,他們都屬于類(lèi)的靜態(tài)成員,而不是對(duì)象成員。
(2)非靜態(tài)成員函數(shù)有this指針,而靜態(tài)成員函數(shù)沒(méi)有this指針。
(3)靜態(tài)成員函數(shù)主要用來(lái)方位靜態(tài)數(shù)據(jù)成員而不能訪(fǎng)問(wèn)非靜態(tài)成員。
二、java的static用法:
1、聲明為static的變量稱(chēng)為靜態(tài)變量或類(lèi)變量??梢灾苯油ㄟ^(guò)類(lèi)名引用靜態(tài)變量,也可以通過(guò)實(shí)例名來(lái)引用靜態(tài)變量,但最好采用前者,因?yàn)楹笳呷菀谆煜o態(tài)變量和一般變量。
2、聲明為static的方法稱(chēng)為靜態(tài)方法或類(lèi)方法。靜態(tài)方法可以直接調(diào)用靜態(tài)方法,訪(fǎng)問(wèn)靜態(tài)變量,但是不能直接訪(fǎng)問(wèn)實(shí)例變量和實(shí)例方法。靜態(tài)方法中不能使用this關(guān)鍵字,因?yàn)殪o態(tài)方法不屬于任何一個(gè)實(shí)例。
參考資料來(lái)源:百度百科-static(計(jì)算機(jī)高級(jí)語(yǔ)言)