www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 工業(yè)控制 > 電子設(shè)計(jì)自動化
[導(dǎo)讀]作者:楊碩,華清遠(yuǎn)見嵌入式學(xué)院講師。C語言的設(shè)計(jì)哲學(xué)要求對象的聲明形式和它的使用形式盡可能相似,比如一個int類型的指針數(shù)組被聲明為int *p[3];并以*p[i]這樣的表達(dá)式引用或者使用指針?biāo)赶虻膇nt數(shù)據(jù),所以它的

作者:楊碩華清遠(yuǎn)見嵌入式學(xué)院講師。

C語言的設(shè)計(jì)哲學(xué)要求對象的聲明形式和它的使用形式盡可能相似,比如一個int類型的指針數(shù)組被聲明為int *p[3];并以*p[i]這樣的表達(dá)式引用或者使用指針?biāo)赶虻膇nt數(shù)據(jù),所以它的聲明形式和使用形式非常相似。這樣做的好處是各種不同操作符的優(yōu)先級在“聲明”和“使用”時是一樣的,而缺點(diǎn)恰好在與C語言的操作符的優(yōu)先級過于復(fù)雜(有15級或者更多,取決于你怎么算),這是C語言設(shè)計(jì)不當(dāng)、過于復(fù)雜之處。

實(shí)際上有些關(guān)鍵字只能出現(xiàn)在聲明中,而不是使用中,比如volatile和const等,這使得聲明形式和使用形式能完全對的上號的例子越來越少了。如果想要把什么東西強(qiáng)制轉(zhuǎn)換為指向數(shù)組的指針,就不得不使用下面的語句來表示這個強(qiáng)制類型轉(zhuǎn)換:

———char (*j) [ 20 ];

———j = ( char ( * )[20] ) malloc(20);

這個強(qiáng)制類型轉(zhuǎn)換看上去很滑稽,星號兩邊的括號看上去可有可無,但是如果去掉就會變成非法語句。

涉及指針和const得聲明可能會有下面幾種不同的組合:

———const int * p;

———int const * p;

———int * const p;

前兩種情況,指針?biāo)赶虻膶ο笫侵蛔x的,而最后一種情況下指針是只讀的。

如果我們想讓對象和指針都是只讀的,那么下面兩種聲明都能做到這一點(diǎn):

———const int * const p;

———int const * const p;

經(jīng)過初級篇、中級篇一直到前面的學(xué)習(xí)我們發(fā)現(xiàn)其實(shí)分析一個聲明就是按照操作符優(yōu)先級規(guī)則把聲明分解開來,分別解釋各個組成部分。要理解一個聲明,必須要懂得其中的優(yōu)先級規(guī)則,下面是《C專家編程》中總結(jié)的C語言聲明的優(yōu)先級規(guī)則:

A聲明從它的名字開始讀取,然后按照優(yōu)先級順序依次讀??;

B 優(yōu)先級從高到低依次是:

B.1 聲明中被括號括起來的那部分;

B.2 后綴操作符:括號()表示這是一個函數(shù),而方括號[]表示這是一個數(shù)組;

B.3 前綴操作符:星號*標(biāo)識“指向……的指針”;

C 如果const和(或者)volatile關(guān)鍵字的后面緊跟類型說明符(如int,long等),那么它作用于類型說明符,在其他情況下,const和(或)volatile關(guān)鍵字作用于它左邊緊鄰的指針星號。

現(xiàn)在,讓我們用優(yōu)先級規(guī)則來分析C語言的一個較復(fù)雜的聲明:

———char * const *(*next) ();

B.1(*next)——next為一個指向……的指針

B.2(*next)()——next是一個函數(shù)指針

B.3*(*next)()——next是一個函數(shù)指針,這個函數(shù)返回一個指向……的指針

Cchar * const——指向字符類型的常量指針

故 char * const *(*next)();的含義就是:next是一個函數(shù)指針,這個函數(shù)返回一個指向字符類型的常量指針。

我想到現(xiàn)在我們是不是發(fā)現(xiàn)分析C語言聲明其實(shí)并不像一開始那么令人感到無比痛苦,它反而給我們帶來了樂趣,不是嗎?其實(shí)我們只要多分析幾個實(shí)例,多讀一些高質(zhì)量的C代碼,那么分析一個C語言聲明不再是一件可怕的事情(更何況我們還有cdecl這個強(qiáng)大的聲明解釋器呢,呵呵!),這匹野馬一旦被我們馴服了,那么它將幫助我們編寫出高質(zhì)量的C代碼。你準(zhǔn)備好了嗎?

“本文由華清遠(yuǎn)見
http://www.embedu.org/index.htm提供”



來源:華清遠(yuǎn)見0次

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

嵌入式系統(tǒng)是一種專用的計(jì)算機(jī)系統(tǒng),作為裝置或設(shè)備的一部分,通常嵌入式系統(tǒng)是一個控制程序存儲在ROM中的嵌入式處理器控制板,事實(shí)上所有帶有數(shù)字接口的設(shè)備,有些嵌入式系統(tǒng)還包含操作系統(tǒng),但大多數(shù)嵌入式系統(tǒng)都是由單個程序?qū)崿F(xiàn)整...

關(guān)鍵字: 嵌入式 語言 技術(shù)

語音編碼器的主要功能就是把用戶語音的PCM(脈沖編碼調(diào)制)樣值編碼成少量的比特(幀)。這種方法使得語音在連路產(chǎn)生誤碼、網(wǎng)絡(luò)抖動和突發(fā)傳輸時具有健壯性(Robustness)。在接收端,語音幀先被誤碼為PCM語音樣值,然后...

關(guān)鍵字: 語音編碼器 PCM 語言

模糊控制算法(理論知識)

關(guān)鍵字: 模糊控制 語言

前言ARM嵌入式和單片機(jī)學(xué)習(xí)有著密不可分的關(guān)系,在學(xué)習(xí)單片機(jī)的過程中積累必要的學(xué)習(xí)經(jīng)驗(yàn)和知識是非常有必要的,如何在這一過程中逐漸成為高級嵌入式工程師呢?本文將為大家介紹如何在學(xué)習(xí)過程中,積累成為高級嵌入式系統(tǒng)硬件工程師要...

關(guān)鍵字: 高級 硬件工程師

任何一種“語言”,都是各種“語言特性”的組合。

關(guān)鍵字: 程序 語言 嵌入式

由于新冠疫情,口罩已經(jīng)成為了一種日常用品。而日本似乎十分熱衷于研究不同類型的口罩,例如為了應(yīng)對夏季的“冰鎮(zhèn)口罩”和帶微型電扇的口罩,還有為了女性美觀研發(fā)的“小臉美口罩”。 8月4日,據(jù)媒體報道,日本一

關(guān)鍵字: 口罩 日本 智能 翻譯 語言

研究表明,人在老年時學(xué)習(xí)第二語言也可以改善認(rèn)知功能。 雖然我們大多數(shù)人都容易學(xué)會技術(shù),但學(xué)習(xí)語言從未如此簡單。

關(guān)鍵字: Android 語言 verbling

航科院民用無人機(jī)檢驗(yàn)中心在湖北武漢對易瓦特科技股份公司的EWZ-S8八旋翼無人機(jī)進(jìn)行了無人機(jī)系統(tǒng)安全能力二級圍欄檢驗(yàn)。本次檢驗(yàn)耗時3個多小時。檢驗(yàn)中心檢驗(yàn)員針對EWZ-S8八旋翼無人機(jī)進(jìn)行了無人

關(guān)鍵字: 無人機(jī) 語言

什么是51單片機(jī)?它有什么注意事項(xiàng)?編程也好設(shè)計(jì)也罷,都要有遵循的規(guī)則??梢园l(fā)揮自己的創(chuàng)新但是要顧全大局,不能隨意的編程。下面分享關(guān)于51單片機(jī)編程的一些規(guī)則,希望能幫到大家,避免大家四處碰壁。

關(guān)鍵字: 51單片機(jī) 編程 語言

1月15日,打著中科院計(jì)算所出品、完全自主開發(fā)旗號的國產(chǎn)編程語言“木蘭”引發(fā)廣泛關(guān)注,但很快被發(fā)現(xiàn)是基于Python語言套殼、換皮而來的產(chǎn)物。 面對質(zhì)疑,中科院計(jì)算所編譯實(shí)驗(yàn)室員工、“木蘭”語言研發(fā)團(tuán)

關(guān)鍵字: 中科院 國產(chǎn) 木蘭 編程 語言 劉雷 計(jì)算所 重罰
關(guān)閉