嵌入式面經(jīng)(1)

姓名:王重月? 學(xué)號(hào):21021211019? ?學(xué)院:電子工程學(xué)院

轉(zhuǎn)自:(30條消息) 嵌入式面經(jīng)_Oliver.H的博客-CSDN博客_嵌入式面經(jīng)

【嵌牛導(dǎo)讀】volatile离赫、引用指針芹壕、static等知識(shí)猎莲。

【嵌牛鼻子】volatile,引用推溃、指針

【嵌牛提問(wèn)】volatile有什么含義?引用和指針有什么區(qū)別坚冀?

【嵌牛正文】volatile原理:

Volatile意思是“易變的”谆刨,應(yīng)該解釋為“直接存取原始內(nèi)存地址”比較合適。 “易變”是因?yàn)橥庠谝蛩匾鸬奈谱穸嗑€程枝冀,中斷等;

C語(yǔ)言書(shū)籍這樣定義volatile關(guān)鍵字:volatile提醒編譯器它后面所定義的變量隨時(shí)都有可能改變耘子,因此編譯后的程序每次需要存儲(chǔ)或讀取這個(gè)變量的時(shí)候果漾,告訴編譯器對(duì)該變量不做優(yōu)化,都會(huì)直接從變量?jī)?nèi)存地址中讀取數(shù)據(jù)谷誓,從而可以提供對(duì)特殊地址的穩(wěn)定訪問(wèn)绒障。。如果沒(méi)有volatile關(guān)鍵字捍歪,則編譯器可能優(yōu)化讀取和存儲(chǔ)端盆,可能暫時(shí)使用寄存器中的值,如果這個(gè)變量由別的程序更新了的話费封,將出現(xiàn)不一致的現(xiàn)象焕妙。(簡(jiǎn)潔的說(shuō)就是:volatile關(guān)鍵詞影響編譯器編譯的結(jié)果,用volatile聲明的變量表示該變量隨時(shí)可能發(fā)生變化弓摘,與該變量有關(guān)的運(yùn)算焚鹊,不要進(jìn)行編譯優(yōu)化,以免出錯(cuò))

下面是volatile變量的幾個(gè)例子:

1). 并行設(shè)備的硬件寄存器(如:狀態(tài)寄存器)

2). 一個(gè)中斷服務(wù)子程序中會(huì)訪問(wèn)到的非自動(dòng)變量(Non-automatic variables)

3). 多線程應(yīng)用中被幾個(gè)任務(wù)共享的變量

回答不出這個(gè)問(wèn)題的人是不會(huì)被雇傭的韧献。我認(rèn)為這是區(qū)分C程序員和嵌入式系統(tǒng)程序員的最基本的問(wèn)題末患。嵌入式系統(tǒng)程序員經(jīng)常同硬件、中斷锤窑、RTOS等等打交道璧针,所用這些都要求volatile變量。不懂得volatile內(nèi)容將會(huì)帶來(lái)災(zāi)難渊啰。

幾個(gè)問(wèn)題:

  1)一個(gè)參數(shù)既可以是const還可以是volatile嗎探橱?

  可以的申屹,例如只讀的狀態(tài)寄存器。它是volatile因?yàn)樗赡鼙灰庀氩坏降馗淖兯砀唷K莄onst因?yàn)槌绦虿粦?yīng)該試圖去修改它哗讥。

  2) 一個(gè)指針可以是volatile 嗎?

  可以胞枕,當(dāng)一個(gè)中服務(wù)子程序修改一個(gè)指向buffer的指針時(shí)杆煞。

  3). 下面的函數(shù)有什么錯(cuò)誤:

這段代碼的目的是用來(lái)返指針ptr指向值的平方,但是腐泻,由于ptr指向一個(gè)volatile型參數(shù)决乎,編譯器將產(chǎn)生類似下面的代碼:

由于*ptr的值可能被意想不到地該變,因此a和b可能是不同的派桩。結(jié)果瑞驱,這段代碼可能返不是你所期望的平方值!正確的代碼如下

注意:頻繁地使用volatile很可能會(huì)增加代碼尺寸和降低性能,因此要合理的使用volatile窄坦。

引用和指針有什么區(qū)別

1)引用必須被初始化,指針不必凳寺。

2)引用初始化以后不能被改變鸭津,指針可以改變所指的對(duì)象。

3)不存在指向空值的引用肠缨,但是存在指向空值的指針逆趋。

.h頭文件中的ifndef/define/endif 的作用?

防止該頭文件被重復(fù)引用晒奕。

全局變量和局部變量的區(qū)別闻书?

1.全局變量?jī)?chǔ)存在靜態(tài)數(shù)據(jù)區(qū),局部變量在堆棧中脑慧。

2.全局變量的生命周期是整個(gè)函數(shù)區(qū)間魄眉,局部變量的生命周期是聲明該變量的函數(shù)區(qū)間。

全局變量和靜態(tài)全局變量的區(qū)別闷袒?

1.全局變量和靜態(tài)全局變量都存儲(chǔ)在靜態(tài)數(shù)據(jù)區(qū)

2.全局變量的作用域是整個(gè)函數(shù)坑律,靜態(tài)全局變量的作用域是**聲明該變量的模塊*

3.static全局變量只初使化一次*

static函數(shù)與普通函數(shù)?

static函數(shù)在內(nèi)存中只有一份囊骤,普通函數(shù)在每個(gè)被調(diào)用中維持一份拷貝

問(wèn):A.c 和B.c兩個(gè)c文件中使用了兩個(gè)相同名字的static變量,編譯的時(shí)候會(huì)不會(huì)有問(wèn)題?這兩個(gè)static變量會(huì)保存到哪里(棧還是堆或者其他的)?

答:static的全局變量晃择,表明這個(gè)變量?jī)H在本模塊中有意義,不會(huì)影響其他模塊也物。

他們都放在數(shù)據(jù)區(qū)宫屠,但是編譯器對(duì)他們的命名是不同的。

如果要使變量在其他模塊也有意義的話滑蚯,需要使用extern關(guān)鍵字浪蹂。

不能做switch()的參數(shù)類型抵栈?

不支持float,double乌逐,string

————————————————

版權(quán)聲明:本文為CSDN博主「Oliver.H」的原創(chuàng)文章竭讳,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明浙踢。

原文鏈接:https://blog.csdn.net/weixin_43253519/article/details/107523751

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末绢慢,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子洛波,更是在濱河造成了極大的恐慌胰舆,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蹬挤,死亡現(xiàn)場(chǎng)離奇詭異缚窿,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)焰扳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門倦零,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人吨悍,你說(shuō)我怎么就攤上這事扫茅。” “怎么了育瓜?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵葫隙,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我躏仇,道長(zhǎng)恋脚,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任焰手,我火速辦了婚禮糟描,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘书妻。我一直安慰自己蚓挤,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布驻子。 她就那樣靜靜地躺著灿意,像睡著了一般。 火紅的嫁衣襯著肌膚如雪崇呵。 梳的紋絲不亂的頭發(fā)上缤剧,一...
    開(kāi)封第一講書(shū)人閱讀 49,784評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音域慷,去河邊找鬼荒辕。 笑死汗销,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的抵窒。 我是一名探鬼主播弛针,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼李皇!你這毒婦竟也來(lái)了削茁?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤掉房,失蹤者是張志新(化名)和其女友劉穎茧跋,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體卓囚,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡瘾杭,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了哪亿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片粥烁。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖蝇棉,靈堂內(nèi)的尸體忽然破棺而出讨阻,到底是詐尸還是另有隱情,我是刑警寧澤银萍,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站恤左,受9級(jí)特大地震影響贴唇,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜飞袋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一戳气、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧巧鸭,春花似錦瓶您、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至郑叠,卻和暖如春夜赵,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背乡革。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工寇僧, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留摊腋,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓嘁傀,卻偏偏與公主長(zhǎng)得像兴蒸,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子细办,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348