<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 在嵌入式軟件編程中深入理解關(guān)鍵字

在嵌入式軟件編程中深入理解關(guān)鍵字

作者: 時(shí)間:2009-11-17 來(lái)源:網(wǎng)絡(luò ) 收藏


引 言
計算機編程語(yǔ)言的就好比是它的靈魂,只有了它們的含義才能編寫(xiě)出優(yōu)秀的代碼。C語(yǔ)言以其簡(jiǎn)潔、高效和強大等特性成為的首選語(yǔ)言,但是某些,例如const、static、extern和volatile等,在不同的場(chǎng)合具有不同的含義,而且某些用法晦澀難懂,為此本文詳細介紹這些的用法及其背后的原理。

本文引用地址:http://dyxdggzs.com/article/152278.htm


1 const
const限定的對象表示編譯器可以將它放在只讀存儲器中,也就意味著(zhù)在對其進(jìn)行初始化之后就不能改變它的值。根據const使用的不同場(chǎng)合,大致可以分為三種情況,其一限定普通變量,其二限定函數參數,其三限定指針變量。
第一和第二種情況最為簡(jiǎn)單,語(yǔ)句①和語(yǔ)句②分別展示了它的用法。語(yǔ)句①定義了一個(gè)值為10的整型常量。語(yǔ)句②中的const表示在函數體中不能修改src指向的區域中的數據,這與函數的拷貝功能相對應,只做它應該做的事情而不應該有其他副作用,編譯器可以利用這些信息進(jìn)行適當的優(yōu)化。
①const int i=10;
②void*memcpy(void * dst,const void * src,size_t size);
③const int *ptr;
④int const *ptr;
⑤int*const ptr;
⑥int const*cons ptr;
第3種情況最為復雜,雖然只是const位置不同,但是卻可能具有完全不同的意義。一般,一個(gè)聲明語(yǔ)句由聲明說(shuō)明符(decl-specifier)和一系列聲明子(declarator)兩部分組成,而且聲明說(shuō)明符中的符號可以以任何次序出現。聲明的第一步是定位說(shuō)明符和聲明子的邊界。這很容易:所有的說(shuō)明符都是關(guān)鍵字或者類(lèi)型名,因此說(shuō)明符終止于第一個(gè)不是以上類(lèi)型之一的符號。例如,在語(yǔ)句③和④中第一個(gè)既不是關(guān)鍵字也不是類(lèi)型名的符號是“*”,即聲明說(shuō)明符分別為const.int和int const,由于聲明說(shuō)明符中的符號可以以任意次序出現,因此語(yǔ)句③和④的含義是相同的。
為了迅速弄清語(yǔ)句表達的含義,參考文獻[1]介紹了一種簡(jiǎn)便的方法,其要點(diǎn)就是“逆序讀出定義”,如圖1所示。

2 static與extem
static的含義隨著(zhù)出現位置(全局變量還是局部變量)和修飾對象(變量還是函數)的不同而有很大的差別。下面各條目中的模塊指的是一個(gè)源文件或者一個(gè)翻譯單元:

①位于函數體中的靜態(tài)變量在多次函數調用間會(huì )維持其值。
②位于模塊內(但在函數體外)的靜態(tài)變量可以被模塊內的所有函數訪(fǎng)問(wèn),但不能被模塊外其他函數訪(fǎng)問(wèn)。也就是說(shuō),它是一個(gè)本地的全局變量。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

上一頁(yè) 1 2 3 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>