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

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

memcpy的效率

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

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

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

改進(jìn)后的代碼最大限度的利用了CPU數(shù)據(jù)總線帶寬,每次傳輸多個字節(jié)(如32位平臺為4字節(jié))。這一實(shí)例告訴我們: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個元素

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

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

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

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

#與##(串化與連接)

C語言中的#與##可能很多人都不了解,更沒有用過,因?yàn)樵谝话愕慕滩纳隙紱]有對它們的介紹。但是把它們用好了,也能使我們的代碼別有一番格調(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é)得多精都不為過,很多知識我們可能一輩子都不會用到,但是不代表我們可以不知道,因?yàn)閯e人在用。

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

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

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

當(dāng)?shù)貢r間9月8日,美國聯(lián)邦通信委員會(FCC)再次以所謂的“國家安全擔(dān)憂”為由,要撤銷對七家中國政府擁有或控制的測試實(shí)驗(yàn)室的認(rèn)可資格。

關(guān)鍵字: 測試測量

近日,美國參議院公布了一項(xiàng)引人注目的國防政策方案,其中包含的“2025年國家人工智能保障準(zhǔn)入和創(chuàng)新法案”(簡稱GAIN AI法案)再次在全球科技領(lǐng)域掀起波瀾。

關(guān)鍵字: AI GPU

近日,比亞迪、極氪、小鵬、Smart和零跑五家中國新能源車企,因涉嫌維修壟斷被澳洲監(jiān)管機(jī)構(gòu)盯上。這不僅可能成為全球首例新能源汽車維修壟斷處罰案例,更給高歌猛進(jìn)的中國車企出海之路蒙上了一層陰影。

關(guān)鍵字: 電動汽車

近日,美國商務(wù)部突然打出“組合拳”,先后撤銷了三星、SK海力士、英特爾、臺積電在中國大陸工廠的“經(jīng)驗(yàn)證最終用戶”(VEU)授權(quán)。對此,美國財經(jīng)媒體認(rèn)為,這實(shí)際上是美國強(qiáng)化對全球半導(dǎo)體產(chǎn)業(yè)鏈控制的重要一步。

關(guān)鍵字: 半導(dǎo)體

全球 AIoT 市場預(yù)計從 2024 年的 110 億美元增長至 2030 年的 480 億美元,年均復(fù)合增長率(CAGR)超過 20%。中國市場同步增長,從 72 億美元增至 220 億美元。在中國,已有超過 100...

關(guān)鍵字: LoRaPlus Semtech LR2021 LPWAN

特斯拉不再只是一家電動汽車公司,馬斯克正在為其賦予一個全新的定義。

關(guān)鍵字: AI 人工智能

隨著半導(dǎo)體行業(yè)邁向后摩爾時代,先進(jìn)封裝技術(shù)正成為推動芯片性能提升和產(chǎn)業(yè)創(chuàng)新的核心驅(qū)動力。在晶體管微縮逐漸逼近物理極限的背景下,先進(jìn)封裝通過異構(gòu)集成、3D堆疊和高密度互連等技術(shù),突破傳統(tǒng)封裝的瓶頸,實(shí)現(xiàn)更高性能、更低功耗和...

關(guān)鍵字: 天成先進(jìn) 3D封裝 Elexcon2025

北京時間9月10日凌晨1點(diǎn),蘋果即將迎來年度重磅發(fā)布會。按照以往規(guī)律,蘋果將通過本次發(fā)布會正式推出iPhone 17 Pro系列。

關(guān)鍵字: iPhone 蘋果 智能手機(jī)

前不久,新思科技已經(jīng)正式對Ansys完成了整個收購。一家是IP和IC設(shè)計方面?zhèn)鹘y(tǒng)三強(qiáng)之一,一家是仿真與分析領(lǐng)域的老牌技術(shù)專家。雙方的結(jié)合也是呼應(yīng)整個技術(shù)潮流,為客戶提供從硅片到系統(tǒng)的完整解決方案。而且,借助Ansys的強(qiáng)...

關(guān)鍵字: Synopsis 新思科技 Ansys 仿真 汽車 AI

全球半導(dǎo)體封裝市場正向PLP、ECP等先進(jìn)技術(shù)傾斜,以應(yīng)對5G和高性能計算需求。但國內(nèi)上規(guī)模的PLP廠商不超過五家,芯友微憑借技術(shù)創(chuàng)新和成本優(yōu)勢已占據(jù)一席之地。面對行業(yè)競爭和終端需求波動,張博威認(rèn)為:“機(jī)會永遠(yuǎn)都在,關(guān)鍵...

關(guān)鍵字: PLP ECP 封裝 芯友微 XINYOUNG
關(guān)閉