女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何提升C編程能力

FPGA之家 ? 來(lái)源:FPGA之家 ? 作者:FPGA之家 ? 2022-06-09 10:24 ? 次閱讀

前言

目前C語(yǔ)言被應(yīng)用得最多的估計(jì)就是嵌入式了,在學(xué)校學(xué)習(xí)完C語(yǔ)言,考完等級(jí)考試之后,可能就會(huì)覺得自己的C語(yǔ)言掌握的還可以了。但這其實(shí)只能算入門,像結(jié)構(gòu)體,指針等內(nèi)容還有很多東西需要去深究,還有GNU的一些補(bǔ)充語(yǔ)法。接下來(lái),我們來(lái)探討一下如何提升!

打怪升級(jí)

1. C語(yǔ)言三劍客

C語(yǔ)言經(jīng)典三劍客《C和指針》《C陷阱與缺陷》《C專家編程》,這三本書相信很多人都聽過(guò)。對(duì)于想提升C編程能力,這三本是絕對(duì)要去閱讀一下的。單純閱讀肯定很枯燥,所以閱讀過(guò)程中還是要去動(dòng)動(dòng)手的。這三本書的章節(jié)其實(shí)也沒(méi)什么必然的關(guān)聯(lián)性,所以建議大家可以挑著看,最近想看研究一下指針,就看"指針"的章節(jié), 想研究動(dòng)態(tài)內(nèi)存分配, 就看"動(dòng)態(tài)內(nèi)存分配"章節(jié)。畢竟這不是入門書籍。

2. GNU C語(yǔ)法

首先我們先來(lái)了解一些概念,ANSI C 、POSIX C、GNU C到底是啥?之間到底有啥關(guān)系?

  • ANSI C :由美國(guó)國(guó)家標(biāo)準(zhǔn)局為C語(yǔ)言制定了一套完整的國(guó)際標(biāo)準(zhǔn)語(yǔ)法,稱為ANSI C,作為C語(yǔ)言最初的標(biāo)準(zhǔn)。

  • POSIX C :POSIX中文翻譯:可移植操作系統(tǒng)接口,POSIX標(biāo)準(zhǔn)的誕生是為了統(tǒng)一個(gè)操作系統(tǒng)的接口,方便開發(fā)者開發(fā)程序,寫出可移植的代碼程序

  • GNU C:GNU的C函數(shù)庫(kù),其實(shí)就是glibc,它是Linux上最重要的函數(shù)庫(kù),它定義了 ANSI C 標(biāo)準(zhǔn)指定的所有的庫(kù)函數(shù),以及由POSIX或其他UNIX操作系統(tǒng)變種指定的附加特色,還包括有與GNU系統(tǒng)相關(guān)的擴(kuò)展。

OK, 有了上面的概念之后。你可能會(huì)明白為什么有時(shí)候會(huì)看到一些奇怪的語(yǔ)法,然后去查課本又找不到。目前大學(xué)里的課本是按ANSI C來(lái)編寫的,都是標(biāo)準(zhǔn)的C語(yǔ)言語(yǔ)法。所以也不用課本垃圾,語(yǔ)法編寫不完整!

回到GNU C上面,GUN C提供了一些新的語(yǔ)法功能,對(duì)于做Linux開發(fā)的,肯定是必須要接觸的。比如:GNU C支持零長(zhǎng)度數(shù)組。


typedef struct test1{    int len;    char a[0];    // 零長(zhǎng)度數(shù)組}TEST1;

這個(gè)時(shí)候數(shù)組是不占用內(nèi)存的,如果聲明指針是會(huì)占用內(nèi)存的。這玩意有什么作用呢?簡(jiǎn)單看一下下面的代碼:


#include#include #include 
typedef struct test1{  int a;  char b[0]; //零長(zhǎng)度數(shù)組}TEST1;

int main(){  char str[] = "helloworld";//malloc分配空間  TEST1* test1 = (TEST1*)malloc(sizeof(TEST1) + 20);  printf("%p
", &(test1->a));  printf("%p
", (test1->b));  //字符串復(fù)制  memcpy(test1->b, str, sizeof(str));  printf("%s
", test1->b);}

這個(gè)時(shí)候我們就可以通過(guò)結(jié)構(gòu)體(TEST1)成員b去訪問(wèn)后面的地址了。它更多是被用在長(zhǎng)度不確定的數(shù)據(jù)上。大家還可以去思考對(duì)比一下和指針的差異!

3.閱讀開源代碼

個(gè)人認(rèn)為,閱讀一下好的開源代碼或者原廠提供的一些SDK,對(duì)于個(gè)人編碼能力會(huì)有很大提升。學(xué)習(xí)他們一些好的編碼規(guī)范和整體架構(gòu)設(shè)計(jì)理念,最最經(jīng)典的當(dāng)然就是Linux系統(tǒng)了。其實(shí)閱讀源碼并不一定要完全理解代碼功能之類的 ,我們更多是去學(xué)習(xí)為什么這么寫, 這么寫用什么好處。當(dāng)然了,也并不是所有都是好的,我們也是取其精華去其糟粕嘛!

來(lái)看個(gè)小例子


#defineMAX(a,b)((a)>(b)?(a):(b))int max( int a, int b){return((a>b)?a:b);}

上面是要對(duì)比兩個(gè)數(shù)的大小,一個(gè)是用宏實(shí)現(xiàn),一個(gè)使用函數(shù)實(shí)現(xiàn)。你覺得哪個(gè)比較好

首先,宏會(huì)比較簡(jiǎn)潔;然后宏可以傳遞各種類型的參數(shù),而函數(shù)只能傳遞int類型的;最后函數(shù)調(diào)用會(huì)帶來(lái)額外的開銷,它需要開辟一片棧空間,記錄返回地址,將形參壓棧,從函數(shù)返回還要釋放堆棧。

但是宏也有缺點(diǎn),宏在預(yù)編譯時(shí)會(huì)拷貝到所有調(diào)用的位置,這樣就會(huì)使編譯出來(lái)的文件變大。

所以這需要看實(shí)際情況來(lái)選擇了,這個(gè)東西我也是在Linux源碼上發(fā)現(xiàn)的,Linux最近更新的版本很經(jīng)常將一些函數(shù)替換成宏的形式。所以多閱讀,多思考,會(huì)提升很快的!

4. 多踩坑,多思考

這東西說(shuō)起來(lái)很虛,實(shí)踐出真知!只有在做項(xiàng)目的時(shí)候,你才會(huì)知道,原來(lái)某些東西組合起來(lái)一起用會(huì)有這么多坑。還有就是多思考,多總結(jié),這絕對(duì)會(huì)事半功倍!不要覺得,反正是“面向?yàn)g覽器編程”,記那么多干嘛。

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    7077

    瀏覽量

    124932
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7630

    瀏覽量

    140200
  • GNU
    GNU
    +關(guān)注

    關(guān)注

    0

    文章

    143

    瀏覽量

    17768

原文標(biāo)題:如何提高C編程能力

文章出處:【微信號(hào):zhuyandz,微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    單片機(jī)c語(yǔ)言編程實(shí)例大全

    單片機(jī)c語(yǔ)言編程實(shí)例大全_18
    發(fā)表于 04-30 16:11 ?2次下載

    如何提升自己的電路設(shè)計(jì)能力,以及編程能力

    想自己設(shè)計(jì)一個(gè)電路,但是不知道如何開始,需要哪些流程,電路相關(guān)的知識(shí)融合不到一起去,求教
    發(fā)表于 04-09 16:08

    接入DeepSeek后智慧場(chǎng)館的能力提升

    的飛躍。以下是DeepSeek賦能智慧場(chǎng)館后的核心能力提升: 1. 認(rèn)知智能升級(jí),實(shí)現(xiàn)更自然的交互體驗(yàn) 智能語(yǔ)音助手2.0:基于DeepSeek強(qiáng)大的NLP能力,場(chǎng)館智能客服可支持多輪復(fù)雜對(duì)話,準(zhǔn)確理解模糊語(yǔ)義(如"離我最近的洗
    的頭像 發(fā)表于 04-02 11:57 ?153次閱讀

    云知學(xué)院開展AI賦能專項(xiàng)能力提升培訓(xùn)

    為順應(yīng)時(shí)代潮流趨勢(shì),提升員工的工作效率和生產(chǎn)力,培養(yǎng)員工從“能用”到“善用”生成式人工智能工具的能力,近日,元翔廈門空港邀請(qǐng)?jiān)浦獙W(xué)院開展AI賦能專項(xiàng)能力提升培訓(xùn)。
    的頭像 發(fā)表于 11-21 14:10 ?494次閱讀

    C語(yǔ)言中的socket編程基礎(chǔ)

    Socket編程簡(jiǎn)介 Socket是一種通信機(jī)制,允許程序之間進(jìn)行通信。在C語(yǔ)言中,socket編程是網(wǎng)絡(luò)編程的基礎(chǔ)。通過(guò)使用socket,程序可以發(fā)送和接收數(shù)據(jù),實(shí)現(xiàn)不同計(jì)算機(jī)之間的
    的頭像 發(fā)表于 11-01 16:51 ?1018次閱讀

    對(duì)TMS320VC5503/C5506/C5507/C5509/C5509A I2C外設(shè)進(jìn)行編程

    電子發(fā)燒友網(wǎng)站提供《對(duì)TMS320VC5503/C5506/C5507/C5509/C5509A I2C外設(shè)進(jìn)行
    發(fā)表于 10-18 09:53 ?0次下載
    對(duì)TMS320VC5503/<b class='flag-5'>C</b>5506/<b class='flag-5'>C</b>5507/<b class='flag-5'>C</b>5509/<b class='flag-5'>C</b>5509A I2<b class='flag-5'>C</b>外設(shè)進(jìn)行<b class='flag-5'>編程</b>

    TMS320C24x/C240x CAN的編程示例

    電子發(fā)燒友網(wǎng)站提供《TMS320C24x/C240x CAN的編程示例.pdf》資料免費(fèi)下載
    發(fā)表于 10-17 09:30 ?0次下載
    TMS320<b class='flag-5'>C</b>24x/<b class='flag-5'>C</b>240x CAN的<b class='flag-5'>編程</b>示例

    C/C中對(duì)TMS320x28xx和28xxx外設(shè)進(jìn)行編程

    電子發(fā)燒友網(wǎng)站提供《在C/C中對(duì)TMS320x28xx和28xxx外設(shè)進(jìn)行編程.pdf》資料免費(fèi)下載
    發(fā)表于 10-16 10:28 ?0次下載
    在<b class='flag-5'>C</b>/<b class='flag-5'>C</b>中對(duì)TMS320x28xx和28xxx外設(shè)進(jìn)行<b class='flag-5'>編程</b>

    C2000?微控制器的USB閃存編程

    電子發(fā)燒友網(wǎng)站提供《C2000?微控制器的USB閃存編程.pdf》資料免費(fèi)下載
    發(fā)表于 09-26 11:30 ?0次下載
    <b class='flag-5'>C</b>2000?微控制器的USB閃存<b class='flag-5'>編程</b>

    C2000?微控制器的串行閃存編程

    電子發(fā)燒友網(wǎng)站提供《C2000?微控制器的串行閃存編程.pdf》資料免費(fèi)下載
    發(fā)表于 09-03 10:15 ?0次下載
    <b class='flag-5'>C</b>2000?微控制器的串行閃存<b class='flag-5'>編程</b>

    embOS的MISRA-C:2012一致性

    MISRA C是汽車工業(yè)軟件可靠性協(xié)會(huì)(MISRA)開發(fā)的一套針對(duì)C編程語(yǔ)言的軟件開發(fā)指南,目的是提升嵌入式系統(tǒng)的安全性和可移植性。2012發(fā)布的MISRA
    的頭像 發(fā)表于 08-20 11:35 ?790次閱讀

    智慧水利山洪災(zāi)害防御能力提升系統(tǒng)

    一、背景隨著科技的快速發(fā)展,智慧水利技術(shù)逐漸成為解決水資源管理、水環(huán)境保護(hù)以及水災(zāi)防治等問(wèn)題的關(guān)鍵手段。其中,智慧水利山洪災(zāi)害防御能力提升系統(tǒng),作為智慧水利的重要組成部分,其在保障人民生命財(cái)產(chǎn)安全
    的頭像 發(fā)表于 08-05 14:42 ?479次閱讀
    智慧水利山洪災(zāi)害防御<b class='flag-5'>能力</b><b class='flag-5'>提升</b>系統(tǒng)

    如何提高LoRa抗干擾能力來(lái)提升通信質(zhì)量的幾種技術(shù)分享

    LoRa(Long?Range)技術(shù)憑借其遠(yuǎn)距離傳輸、低功耗和高抗干擾能力,在物聯(lián)網(wǎng)(IoT)領(lǐng)域得到了廣泛應(yīng)用。 LoRa技術(shù) 強(qiáng)大的抗干擾能力不僅提高了信號(hào)的穩(wěn)定性和通信距離,還提升了數(shù)據(jù)
    的頭像 發(fā)表于 07-23 18:37 ?1725次閱讀

    如何提升嵌入式編程能力?

    如何提升嵌入式編程能力? 要提升嵌入式編程能力,可以從以下幾點(diǎn)學(xué)習(xí): 1. 理解硬件:熟悉你正
    發(fā)表于 06-21 10:01

    PLC編程語(yǔ)言和C語(yǔ)言的區(qū)別

    在工業(yè)自動(dòng)化和計(jì)算機(jī)編程領(lǐng)域中,PLC(可編程邏輯控制器)編程語(yǔ)言和C語(yǔ)言各自扮演著重要的角色。盡管兩者都是編程語(yǔ)言,但它們?cè)诙鄠€(gè)方面存在顯
    的頭像 發(fā)表于 06-14 17:11 ?4366次閱讀