找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2941|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

關(guān)鍵字static的作用

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:108615 發(fā)表于 2016-3-13 17:15 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
C語言中,關(guān)鍵字static有三個(gè)明顯的作用:
1)在函數(shù)體內(nèi),一個(gè)被聲明為靜態(tài)的變量在這一函數(shù)被調(diào)用過程中維持其值不變(該變量存放在靜態(tài)變量區(qū))。
2) 在模塊內(nèi)(但在函數(shù)體外),一個(gè)被聲明為靜態(tài)的變量可以被模塊內(nèi)所用函數(shù)訪問,但不能被模塊外其它函數(shù)訪問。它是一個(gè)本地的全局變量。
3) 在模塊內(nèi),一個(gè)被聲明為靜態(tài)的函數(shù)只可被這一模塊內(nèi)的其它函數(shù)調(diào)用。那就是,這個(gè)函數(shù)被限制在聲明它的模塊的本地范圍內(nèi)使用。
大多數(shù)應(yīng)試者能正確回答第一部分,一部分能正確回答第二部分,但是很少的人能懂得第三部分。這是一個(gè)應(yīng)試者的嚴(yán)重的缺點(diǎn),因?yàn)樗@然不懂得本地化數(shù)據(jù)和代碼范圍的好處和重要性。
考點(diǎn):在嵌入式系統(tǒng)中,要時(shí)刻懂得移植的重要性,程序可能是很多程序員共同協(xié)作同時(shí)完成,在定義變量及函數(shù)的過程,可能會(huì)重名,這給系統(tǒng)的集成帶來麻煩,因此保證不沖突的辦法是顯示的表示此變量或者函數(shù)是本地的,static即可。
Linux的模塊編程中,這一條很明顯,所有的函數(shù)和全局變量都要用static關(guān)鍵字聲明,將其作用域限制在本模塊內(nèi)部,與其他模塊共享的函數(shù)或者變量要EXPORT到內(nèi)核中。
static關(guān)鍵字至少有下列n個(gè)作用:
1)設(shè)置變量的存儲(chǔ)域,函數(shù)體內(nèi)static變量的作用范圍為該函數(shù)體,不同于auto變量,該變量的內(nèi)存只被分配一次,因此其值在下次調(diào)用時(shí)仍維持上次的值;
2)限制變量的作用域,在模塊內(nèi)的static全局變量可以被模塊內(nèi)所用函數(shù)訪問,但不能被模塊外其它函數(shù)訪問;
3)限制函數(shù)的作用域,在模塊內(nèi)的static函數(shù)只可被這一模塊內(nèi)的其它函數(shù)調(diào)用,這個(gè)函數(shù)的使用范圍被限制在聲明它的模塊內(nèi);
4)在類中的static成員變量意味著它為該類的所有實(shí)例所共享,也就是說當(dāng)某個(gè)類的實(shí)例修改了該靜態(tài)成員變量,其修改值為該類的其它所有實(shí)例所見;
5)在類中的static成員函數(shù)屬于整個(gè)類所擁有,這個(gè)函數(shù)不接收this指針,因而只能訪問類的static成員變量。


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表