日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 原創(chuàng) > 振南技術(shù)干貨集(風(fēng)云錄)
[導(dǎo)讀]memcpy函數(shù)的功能是用來作內(nèi)存搬運(yùn),就是將數(shù)據(jù)從一個數(shù)組賦值到另一個數(shù)組。它的實現(xiàn)很簡單:

memcpy的效率

memcpy函數(shù)的功能是用來作內(nèi)存搬運(yùn),就是將數(shù)據(jù)從一個數(shù)組賦值到另一個數(shù)組。它的實現(xiàn)很簡單:

但是這種實現(xiàn)方式,其實是比較膚淺而低效的。作為嵌入式或硬件工程師,如果對上面的代碼看不出什么問題的話,那可能要好好找找自身的原因。

上面的代碼,對CPU數(shù)據(jù)總線帶寬的利用率不高,我們把它改成這樣:

改進(jìn)后的代碼最大限度的利用了CPU數(shù)據(jù)總線帶寬,每次傳輸多個字節(jié)(如32位平臺為4字節(jié))。這一實例告訴我們:C語言,尤其是嵌入式C語言很多時候需要考慮硬件層面的因素,如CPU總線、內(nèi)存結(jié)構(gòu)等。

[]的本質(zhì)

當(dāng)我們想取出一個數(shù)組中的某個元素時,我們會用到[],采用下標(biāo)的方式。如下例:

int a[3]={1,2,3};

a[1]; //數(shù)組a的第2個元素

其實我們可以用其它方式取出這個元素,即*(a+1)??梢钥吹絒]與*,在功能上有相似之處。其實[]并不限于與數(shù)組搭配訪問數(shù)組元素,它的實質(zhì)是:訪問以指針?biāo)赶虻牡刂窞殚_始地址,以其下標(biāo)為偏移量的存儲單元中的數(shù)據(jù),如圖2.12所示。

圖2.12 []的實質(zhì)其實就是所謂的“基址偏移量取值”

上圖可能顛覆了一些人對[]的認(rèn)識,下標(biāo)還能是負(fù)數(shù)?[]可以在一個開始地址后面去取數(shù)據(jù),為什么不能在它前面取數(shù)據(jù)呢?我們可以理解[]是對指針加減和取值操作的綜合。

認(rèn)清了[]的實質(zhì),再加上對C語言的精髓--指針深刻的理解,我們編程將會非常靈活,肆意揮灑。

#與##(串化與連接)

C語言中的#與##可能很多人都不了解,更沒有用過,因為在一般的教材上都沒有對它們的介紹。但是把它們用好了,也能使我們的代碼別有一番格調(diào)。

串化,在宏定義中#可以將宏參數(shù)轉(zhuǎn)換為字符串,即在宏參數(shù)的開頭和末尾添加引號。似乎有些雞肋,但是如果看到別人的代碼有用到串化的時候,我們需要能夠看懂。

再來看一下連接符##,它用來將參數(shù)和其它的內(nèi)容連接起來,如下例:

#define CON1(a, b) a##e##b#define CON2(a, b) a##b##00

printf("%f\n", CON1(8.5, 2));printf("%d\n", CON2(12, 34));

printf("%f\n", 8.5e2); //展開后的效果

printf("%d\n", 123400); //展開后的效果

我在很多ARM官方評估板的配套代碼中看到過大量串化與連接的應(yīng)用,當(dāng)時我并不知道C語言還有串化連接這些東西(雖然我已經(jīng)用C語言有十幾年了),所以有些看不明白。通過百度學(xué)習(xí)了一下#與##,這才懂了。所以,C語言學(xué)得多精都不為過,很多知識我們可能一輩子都不會用到,但是不代表我們可以不知道,因為別人在用。

OK,關(guān)于C語言方面的一些常見問題、非常規(guī)操作以及認(rèn)知誤區(qū)振南就講這么多。C語言其實是博大精深,還是那句話:“學(xué)得多精都不為過!”我一直把嵌入式工程師比喻成“能與硬件對話的靈媒”,我們所使用的語言就是C語言。我們自認(rèn)為對C語言已經(jīng)足夠了解了,足夠精通了,但是我們又會發(fā)現(xiàn)在實際開發(fā)過程中,會遇到很多新的問題,很多問題是與C語言本身相關(guān)的。

所以記?。骸皩W(xué)海無涯!” 有C語言方面的問題,歡迎與振南來溝通交流,我自己也在不斷學(xué)習(xí)的過程中。

聲明:該篇文章為本站原創(chuàng),未經(jīng)授權(quán)不予轉(zhuǎn)載,侵權(quán)必究。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護(hù)是驅(qū)動電源設(shè)計中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計成為提升電機(jī)驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗。要解決這一問題,需從設(shè)計、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機(jī)驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉