国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何提升C編程能力

FPGA之家 ? 來源:FPGA之家 ? 作者:FPGA之家 ? 2022-06-09 10:24 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

目前C語言被應用得最多的估計就是嵌入式了,在學校學習完C語言,考完等級考試之后,可能就會覺得自己的C語言掌握的還可以了。但這其實只能算入門,像結構體,指針等內容還有很多東西需要去深究,還有GNU的一些補充語法。接下來,我們來探討一下如何提升!

打怪升級

1. C語言三劍客

C語言經典三劍客《C和指針》《C陷阱與缺陷》《C專家編程》,這三本書相信很多人都聽過。對于想提升C編程能力,這三本是絕對要去閱讀一下的。單純閱讀肯定很枯燥,所以閱讀過程中還是要去動動手的。這三本書的章節其實也沒什么必然的關聯性,所以建議大家可以挑著看,最近想看研究一下指針,就看"指針"的章節, 想研究動態內存分配, 就看"動態內存分配"章節。畢竟這不是入門書籍。

2. GNU C語法

首先我們先來了解一些概念,ANSI C 、POSIX C、GNU C到底是啥?之間到底有啥關系?

  • ANSI C :由美國國家標準局為C語言制定了一套完整的國際標準語法,稱為ANSI C,作為C語言最初的標準。

  • POSIX C :POSIX中文翻譯:可移植操作系統接口,POSIX標準的誕生是為了統一個操作系統的接口,方便開發者開發程序,寫出可移植的代碼程序

  • GNU C:GNU的C函數庫,其實就是glibc,它是Linux上最重要的函數庫,它定義了 ANSI C 標準指定的所有的庫函數,以及由POSIX或其他UNIX操作系統變種指定的附加特色,還包括有與GNU系統相關的擴展。

OK, 有了上面的概念之后。你可能會明白為什么有時候會看到一些奇怪的語法,然后去查課本又找不到。目前大學里的課本是按ANSI C來編寫的,都是標準的C語言語法。所以也不用課本垃圾,語法編寫不完整!

回到GNU C上面,GUN C提供了一些新的語法功能,對于做Linux開發的,肯定是必須要接觸的。比如:GNU C支持零長度數組。


typedef struct test1{    int len;    char a[0];    // 零長度數組}TEST1;

這個時候數組是不占用內存的,如果聲明指針是會占用內存的。這玩意有什么作用呢?簡單看一下下面的代碼:


#include#include #include 
typedef struct test1{  int a;  char b[0]; //零長度數組}TEST1;

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

這個時候我們就可以通過結構體(TEST1)成員b去訪問后面的地址了。它更多是被用在長度不確定的數據上。大家還可以去思考對比一下和指針的差異!

3.閱讀開源代碼

個人認為,閱讀一下好的開源代碼或者原廠提供的一些SDK,對于個人編碼能力會有很大提升。學習他們一些好的編碼規范和整體架構設計理念,最最經典的當然就是Linux系統了。其實閱讀源碼并不一定要完全理解代碼功能之類的 ,我們更多是去學習為什么這么寫, 這么寫用什么好處。當然了,也并不是所有都是好的,我們也是取其精華去其糟粕嘛!

來看個小例子


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

上面是要對比兩個數的大小,一個是用宏實現,一個使用函數實現。你覺得哪個比較好

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

但是宏也有缺點,宏在預編譯時會拷貝到所有調用的位置,這樣就會使編譯出來的文件變大。

所以這需要看實際情況來選擇了,這個東西我也是在Linux源碼上發現的,Linux最近更新的版本很經常將一些函數替換成宏的形式。所以多閱讀,多思考,會提升很快的!

4. 多踩坑,多思考

這東西說起來很虛,實踐出真知!只有在做項目的時候,你才會知道,原來某些東西組合起來一起用會有這么多坑。還有就是多思考,多總結,這絕對會事半功倍!不要覺得,反正是“面向瀏覽器編程”,記那么多干嘛。

審核編輯 :李倩

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 操作系統
    +關注

    關注

    37

    文章

    7343

    瀏覽量

    128826
  • C語言
    +關注

    關注

    183

    文章

    7642

    瀏覽量

    144766
  • GNU
    GNU
    +關注

    關注

    0

    文章

    144

    瀏覽量

    18248

原文標題:如何提高C編程能力

文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    嵌入式應掌握的幾種能力

    1. 編程語言 基本掌握嵌入式必備的編程語言。C語言為主,C++為輔。在資源有限的情況下,大多數嵌入式產品還是使用C語言為主的,特別是底層
    發表于 12-08 06:05

    C語言的編程技巧

    設計,分層開發代碼,便于理解和維護。 ?8、避免使用GOTO語句?:盡管GOTO語句在某些情況下仍然有用,但現代編程更傾向于使用函數和循環控制結構,以提高代碼的可讀性和維護性。 ?9、利用C語言的靈活性
    發表于 11-27 06:46

    一文了解Mojo編程語言

    Mojo 是一種由 Modular AI 公司開發的編程語言,旨在將 Python 的易用性與 C 語言的高性能相結合,特別適合人工智能(AI)、高性能計算(HPC)和系統級編程場景。以下是關于
    發表于 11-07 05:59

    芯盾時代助力遼寧某銀行提升移動端安全防護能力

    芯盾時代中標遼寧某銀行!芯盾時代設備指紋技術具備高精度的設備識別能力,通過基于自主研發的算法,結合后臺設備信息,為設備產生專有的ID,能夠幫助銀行提升移動端安全防護能力,精準區分合法與風險行為。
    的頭像 發表于 10-31 09:48 ?324次閱讀
    芯盾時代助力遼寧某銀行<b class='flag-5'>提升</b>移動端安全防護<b class='flag-5'>能力</b>

    電網結構優化具體是如何提升新能源發電的消納能力的?

    電網結構優化提升新能源消納能力的核心邏輯,是 針對新能源消納的核心痛點(時空分布不均、出力波動大、并網通道不足、局部承載有限),通過重構電網的 “輸送路徑、分配方式、平衡機制、調節能力”,構建 “能
    的頭像 發表于 10-14 17:40 ?624次閱讀

    技能+1!如何在樹莓派上使用C++控制GPIO?

    和PiGPIO等庫,C++可用于編程控制樹莓派的GPIO引腳。它提供了更好的性能和控制能力,非常適合對速度和精度要求較高的硬件項目。在樹莓派社區中,關于“Python
    的頭像 發表于 08-06 15:33 ?3685次閱讀
    技能+1!如何在樹莓派上使用<b class='flag-5'>C</b>++控制GPIO?

    在STM32F103c8上做DLQR最優控制算法的C編程資料

    這是我近期做的一個項目--基于STM32F103c8的DLQR控制算法的C編程,涉及DLQR最優控制算法、嵌入式STM32F103編程、CMSIS-DSP庫使用。? ??附有完整的程序
    發表于 07-23 15:30 ?0次下載

    D3502C:低靜態電流設計,延長設備續航能力

    ? ? ? ? 在當今電子設備日益便攜化和智能化的背景下,電源管理芯片的低功耗設計成為提升設備續航能力的關鍵因素之一。D3502C?高壓降壓轉換器,憑借其低靜態電流設計,顯著延長了電池供電設備
    的頭像 發表于 07-14 14:53 ?398次閱讀

    DevEco CodeGenie 鴻蒙AI 輔助編程初次使用

    一、工具概述與核心能力 DevEco CodeGenie 是集成在 DevEco Studio 中的 AI 輔助編程插件,專為 HarmonyOS 應用開發設計,提供三大核心能力: 智能知識問答
    的頭像 發表于 06-26 08:48 ?596次閱讀

    單片機c語言編程實例大全

    單片機c語言編程實例大全_18
    發表于 04-30 16:11 ?6次下載

    如何提升自己的電路設計能力,以及編程能力

    想自己設計一個電路,但是不知道如何開始,需要哪些流程,電路相關的知識融合不到一起去,求教
    發表于 04-09 16:08

    接入DeepSeek后智慧場館的能力提升

    的飛躍。以下是DeepSeek賦能智慧場館后的核心能力提升: 1. 認知智能升級,實現更自然的交互體驗 智能語音助手2.0:基于DeepSeek強大的NLP能力,場館智能客服可支持多輪復雜對話,準確理解模糊語義(如"離我最近的洗
    的頭像 發表于 04-02 11:57 ?460次閱讀

    Triton編譯器如何提升編程效率

    在現代軟件開發中,編譯器扮演著至關重要的角色。它們不僅將高級語言代碼轉換為機器可執行的代碼,還通過各種優化技術提升程序的性能。Triton 編譯器作為一種先進的編譯器,通過多種方式提升編程效率,使得
    的頭像 發表于 12-25 09:12 ?1244次閱讀

    運動控制卡網絡通訊的心跳檢測之C#上位機編程

    使用C#上位機編程實現運動控制卡網絡通訊的心跳檢測功能
    的頭像 發表于 12-24 10:54 ?2035次閱讀
    運動控制卡網絡通訊的心跳檢測之<b class='flag-5'>C</b>#上位機<b class='flag-5'>編程</b>

    外資制造業可利用AI提升決策能力

    實現其他目標。通過運籌優化技術,企業可以提升有限資源的配置效率,快速適應市場變化。尤其在競爭日益激烈的存量市場中,靈活精準的規劃與決策能力無疑是企業保持競爭力的關鍵。
    的頭像 發表于 12-24 10:01 ?729次閱讀