一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

必看!15個(gè)C語(yǔ)言常見(jiàn)陷阱及避坑指南

哈哈hfgfdf ? 來(lái)源:電子嵌入式學(xué)習(xí) ? 作者:電子嵌入式學(xué)習(xí) ? 2025-03-16 12:10 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

C語(yǔ)言雖強(qiáng)大,但隱藏的“坑”也不少!稍不留神就會(huì)導(dǎo)致程序崩潰、數(shù)據(jù)異常。本文整理15個(gè)高頻陷阱,助你寫(xiě)出更穩(wěn)健的代碼!

陷阱1:運(yùn)算符優(yōu)先級(jí)混淆

問(wèn)題:運(yùn)算符優(yōu)先級(jí)不同可能導(dǎo)致計(jì)算順序錯(cuò)誤。

int a = 5, b = 3;

int c = a++ * --b; // a=6, b=2, c=10

若寫(xiě)成 ++a * b--,結(jié)果會(huì)變?yōu)?c=18(a=6, b=2)。

解決:

熟記優(yōu)先級(jí)表,或用括號(hào)明確順序:

int c = (a++) * (--b);

陷阱2:變量名大小寫(xiě)敏感

問(wèn)題:myVar和 MyVar會(huì)被視為不同變量。

int MyVar = 5;

int myvar = 3;

printf("%d", MyVar + myvar); // 輸出8

解決:

統(tǒng)一命名風(fēng)格(如全小寫(xiě)+下劃線),避免混淆。

陷阱3:數(shù)組越界訪問(wèn)

問(wèn)題:訪問(wèn)不存在的下標(biāo)導(dǎo)致崩潰或數(shù)據(jù)污染。

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

int x = arr[3]; // 越界!

解決:

牢記數(shù)組下標(biāo)范圍是 0到長(zhǎng)度-1。

陷阱4:整型溢出

問(wèn)題:數(shù)值超出類型范圍會(huì)“循環(huán)”取值。

unsigned char x = 255;

x += 1; // x=0

解決:

預(yù)估數(shù)值范圍,選用 `int32_t`、`uint64_t` 等合適類型。

陷阱5:空指針解引用

問(wèn)題:未初始化指針直接使用導(dǎo)致崩潰。

int *p = NULL;

*p = 5; // 致命錯(cuò)誤!

解決:

使用前檢查指針有效性:

if (p != NULL) *p = 5;

陷阱6:隨機(jī)數(shù)種子未設(shè)置

問(wèn)題:rand()默認(rèn)種子固定,導(dǎo)致隨機(jī)序列重復(fù)。

for (int i=0; i<10; i++) { ?

printf("%d ", rand()); // 每次輸出相同序列

}

解決:

用 srand(time(NULL))`初始化種子。

陷阱7:字符串未正確終止

問(wèn)題:忘記添加 `` 導(dǎo)致字符串異常。

char str[10] = "hello";

str[5] = 'w'; // 覆蓋了原結(jié)尾的

printf("%s", str); // 輸出亂碼

解決:

手動(dòng)補(bǔ) ``:

str[5] = 'w';

str[6] = '';

陷阱8:死循環(huán)

問(wèn)題:循環(huán)條件錯(cuò)誤導(dǎo)致無(wú)限執(zhí)行。

int i=0;

while (i < 10) { ?

printf("%d ", i);

} // i未自增,死循環(huán)!

解決:

檢查循環(huán)變量是否更新,或用 `for` 替代。

陷阱9:變量作用域錯(cuò)誤

問(wèn)題:在作用域外訪問(wèn)變量。

if (x == 1) {

int y = 2;

}

printf("%d", y); // 編譯錯(cuò)誤!

解決:

理解作用域規(guī)則,必要時(shí)將變量聲明在外部。

陷阱10:隱式類型轉(zhuǎn)換

問(wèn)題:未顯式轉(zhuǎn)換導(dǎo)致結(jié)果錯(cuò)誤。

int a = 5;

double b = 2.0;

printf("%f", a / b); // 正確寫(xiě)法:(double)a / b

解決:

手動(dòng)強(qiáng)制轉(zhuǎn)換類型,避免隱式轉(zhuǎn)換歧義。

陷阱11:函數(shù)參數(shù)不匹配

問(wèn)題:參數(shù)數(shù)量或類型錯(cuò)誤導(dǎo)致編譯失敗。

int add(int a, int b);

printf("%d", add(1,2,3)); // 參數(shù)過(guò)多!

解決:

嚴(yán)格匹配函數(shù)聲明與調(diào)用參數(shù)。

---

陷阱12:空結(jié)構(gòu)體指針訪問(wèn)

問(wèn)題:未初始化指針訪問(wèn)成員導(dǎo)致崩潰。

struct Person *p = NULL;

printf("%s", p->name); // 訪問(wèn)空指針!

解決:

檢查指針是否有效后再操作。

陷阱13:文件未正確關(guān)閉

問(wèn)題:未處理 `fopen` 失敗或忘記 `fclose`。

FILE *fp = fopen("test.txt", "r");

// 未檢查fp是否為NULL

fclose(fp); // 若fp為NULL,程序崩潰

解決:

始終檢查文件指針,并確保關(guān)閉:

if (fp != NULL) fclose(fp);

陷阱14:宏定義未加括號(hào)

問(wèn)題:宏展開(kāi)后運(yùn)算順序錯(cuò)誤。

#define SQUARE(x) x*x

int b = SQUARE(a+1); // 展開(kāi)為a+1*a+1=2a+1

解決:

宏參數(shù)用括號(hào)包裹:

#define SQUARE(x) (x)*(x)

陷阱15:多線程未同步

問(wèn)題:多線程競(jìng)爭(zhēng)導(dǎo)致數(shù)據(jù)錯(cuò)亂。

// 兩個(gè)線程同時(shí)調(diào)用printf可能輸出亂序

pthread_create(&t1, NULL, print_msg, "Thread1");

pthread_create(&t2, NULL, print_msg, "Thread2");

解決:

使用互斥鎖(mutex)或信號(hào)量同步線程。

總結(jié):C語(yǔ)言陷阱雖多,但通過(guò)規(guī)范編碼、充分測(cè)試和工具檢查(如靜態(tài)分析工具),可大幅降低風(fēng)險(xiǎn)。建議收藏本文,編碼時(shí)多自查!

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(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)投訴
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7632

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    電商API常見(jiàn)錯(cuò)誤排查指南:避免集成陷阱

    ,幫助您高效避免集成陷阱。內(nèi)容基于真實(shí)電商API實(shí)踐,確??煽啃院蛯?shí)用性。 一、常見(jiàn)錯(cuò)誤類型 電商API集成中,錯(cuò)誤往往源于認(rèn)證、數(shù)據(jù)、限流等環(huán)節(jié)。以下是高頻問(wèn)題: 認(rèn)證失敗錯(cuò)誤 當(dāng)API請(qǐng)求未通過(guò)身份驗(yàn)證時(shí),系統(tǒng)返回錯(cuò)誤碼如401或
    的頭像 發(fā)表于 07-11 14:21 ?113次閱讀
    電商API<b class='flag-5'>常見(jiàn)</b>錯(cuò)誤排查<b class='flag-5'>指南</b>:避免集成<b class='flag-5'>陷阱</b>

    2025年G口大帶寬服務(wù)器選購(gòu)指南這3點(diǎn),省下50%成本!

    面對(duì)市場(chǎng)上琳瑯滿目的服務(wù)器產(chǎn)品,如何避免踩、實(shí)現(xiàn)成本與性能的平衡,成為企業(yè)和個(gè)人用戶關(guān)注的焦點(diǎn)。本文將從配置需求、要點(diǎn)、成本控制三大維度,為您提供一份客觀、簡(jiǎn)潔的2025年G口大帶寬服務(wù)器選購(gòu)
    的頭像 發(fā)表于 07-10 10:17 ?313次閱讀

    工程師必存!IO模塊十大指南

    甚至安全事故。本文將整理常見(jiàn)的 IO 模塊選型錯(cuò)誤,通過(guò) “事故案例 + 解決方案” 的形式,為工程師們提供一份實(shí)用的指南。? 一、忽略抗干擾設(shè)計(jì)? 事故案例? 某大型工廠的自動(dòng)化
    的頭像 發(fā)表于 06-26 12:06 ?112次閱讀
    工程師必存!IO模塊十大<b class='flag-5'>避</b><b class='flag-5'>坑</b><b class='flag-5'>指南</b>

    購(gòu)買機(jī)器人氣密性檢測(cè)儀:指南和建議

    家人們,在工業(yè)生產(chǎn)中,機(jī)器人氣密性檢測(cè)儀是保證產(chǎn)品質(zhì)量的偉大貢獻(xiàn)者。然而,在購(gòu)買這個(gè)東西時(shí),也是一個(gè)接一個(gè)的。今天,我想談?wù)勅绾伪苊膺@些,并成功地購(gòu)買合適的檢測(cè)儀。(1)避開(kāi)精度虛
    的頭像 發(fā)表于 06-23 13:56 ?140次閱讀
    購(gòu)買機(jī)器人氣密性檢測(cè)儀:<b class='flag-5'>避</b><b class='flag-5'>坑</b><b class='flag-5'>指南</b>和建議

    工業(yè)現(xiàn)場(chǎng)電磁干擾強(qiáng)?聚徽解碼工控一體機(jī)抗干擾“指南

    權(quán)威標(biāo)準(zhǔn)與工業(yè)現(xiàn)場(chǎng)實(shí)戰(zhàn)經(jīng)驗(yàn),總結(jié)出一套“指南,助力企業(yè)降低60%以上的電磁干擾故障,保障工業(yè)自動(dòng)化系統(tǒng)的穩(wěn)定運(yùn)行。 一、源頭:設(shè)備
    的頭像 發(fā)表于 06-12 14:37 ?266次閱讀

    采購(gòu)二手 ABB 主板必看:電路板 / 板卡的 5 大檢測(cè)要點(diǎn)

    摘要 本文針對(duì)二手 ABB 主板采購(gòu),系統(tǒng)總結(jié)電路板 / 板卡的 5 大檢測(cè)要點(diǎn),涵蓋外觀檢查、電氣性能測(cè)試、功能驗(yàn)證等維度,為采購(gòu)者提供專業(yè)檢測(cè)指引,助力規(guī)避采購(gòu)風(fēng)險(xiǎn),獲取性能可靠的二手主板
    的頭像 發(fā)表于 06-07 15:59 ?264次閱讀
    采購(gòu)二手 ABB 主板<b class='flag-5'>必看</b>:電路板 / 板卡的 5 大<b class='flag-5'>避</b><b class='flag-5'>坑</b>檢測(cè)要點(diǎn)

    EMC 設(shè)計(jì)指南:四不口訣

    明明設(shè)計(jì)得很好,為什么一做EMC測(cè)試就失敗?雷卯EMC小哥教大家4個(gè)超實(shí)用的EMC設(shè)計(jì)技巧四不口訣,幫你避開(kāi)常見(jiàn)!準(zhǔn)則1讓電流“走捷徑”,不繞遠(yuǎn)路核心邏輯:高頻電流走“電感最小路徑”,環(huán)路越大→輻射越強(qiáng)!雷卯實(shí)驗(yàn)室關(guān)鍵知識(shí)點(diǎn)
    的頭像 發(fā)表于 05-29 09:03 ?781次閱讀
    EMC 設(shè)計(jì)<b class='flag-5'>避</b><b class='flag-5'>坑</b><b class='flag-5'>指南</b>:四不口訣

    EMC 設(shè)計(jì)指南:四不口訣

    你的產(chǎn)品明明設(shè)計(jì)得很好,為什么一做EMC測(cè)試就失?。坷酌瓻MC小哥教大家4個(gè)超實(shí)用的EMC設(shè)計(jì)技巧四不口訣,幫你避開(kāi)常見(jiàn)! 準(zhǔn)則 1:讓電流“走捷徑”,不繞遠(yuǎn)路 核心邏輯 :高頻電流走 “電感
    的頭像 發(fā)表于 05-28 16:50 ?214次閱讀
    EMC 設(shè)計(jì)<b class='flag-5'>避</b><b class='flag-5'>坑</b><b class='flag-5'>指南</b>:四不口訣

    揭秘Air780EPM開(kāi)發(fā)陷阱:20個(gè)指南與最佳解決方案

    重復(fù)報(bào)錯(cuò)、資源過(guò)載等“隱形陷阱”消耗大量開(kāi)發(fā)時(shí)間。本文基于經(jīng)驗(yàn)提煉20個(gè)關(guān)鍵問(wèn)題,傳授規(guī)避技巧與優(yōu)化方案,讓您的代碼更健壯。希望能幫助到需要的朋友,歡迎一起學(xué)習(xí)交流。 ? 最新開(kāi)發(fā)資料詳見(jiàn)
    的頭像 發(fā)表于 05-21 16:04 ?229次閱讀
    揭秘Air780EPM開(kāi)發(fā)<b class='flag-5'>陷阱</b>:20<b class='flag-5'>個(gè)</b><b class='flag-5'>避</b><b class='flag-5'>坑</b><b class='flag-5'>指南</b>與最佳解決方案

    選購(gòu)高精度貼片機(jī)必看!5大核心關(guān)注點(diǎn)與指南

    貼片機(jī),成為眾多企業(yè)面臨的難題。本文將為您揭示選購(gòu)高精度貼片機(jī)的核心關(guān)注點(diǎn),并提供實(shí)用的指南,助您做出明智決策。一、核心關(guān)注點(diǎn)1、貼裝精度:貼裝精度是高精度貼片機(jī)
    的頭像 發(fā)表于 05-08 11:45 ?256次閱讀
    選購(gòu)高精度貼片機(jī)<b class='flag-5'>必看</b>!5大核心關(guān)注點(diǎn)與<b class='flag-5'>避</b><b class='flag-5'>坑</b><b class='flag-5'>指南</b>

    多模光纖跳線全解析:類型、選型指南建議

    ,為您全方位的解析多模光纖跳線的類型及選型指南。無(wú)論您是網(wǎng)絡(luò)工程師還是數(shù)據(jù)中心規(guī)劃者,3分鐘掌握這些要點(diǎn),可規(guī)避80%的部署風(fēng)險(xiǎn)!
    的頭像 發(fā)表于 04-28 09:43 ?422次閱讀
    多模光纖跳線全解析:類型、選型<b class='flag-5'>指南</b>與<b class='flag-5'>避</b><b class='flag-5'>坑</b>建議

    嵌入式開(kāi)發(fā)指南|FreeRTOS的5個(gè)\"反直覺(jué)\"小技巧

    、SPI) 4-7:控制層(PID算法、PWM生成) 1-3:后臺(tái)層(日志、UI刷新) 注:STM32建議不超過(guò)32個(gè)優(yōu)先級(jí) 指南: 使用xTaskCreateStatic(
    發(fā)表于 03-20 13:57

    MOS管選型十大陷阱:參數(shù)誤讀引發(fā)的血淚教訓(xùn)MDD

    提供指南。一、VDS耐壓虛標(biāo):動(dòng)態(tài)尖峰的致命盲區(qū)誤讀后果:某充電樁模塊標(biāo)稱650V耐壓MOS管,實(shí)際測(cè)試中因關(guān)斷尖峰達(dá)720V導(dǎo)致批量擊穿。數(shù)據(jù)手冊(cè)陷阱:廠家
    的頭像 發(fā)表于 03-04 12:01 ?488次閱讀
    MOS管選型十大<b class='flag-5'>陷阱</b>:參數(shù)誤讀引發(fā)的血淚教訓(xùn)MDD

    電子小白必看!單片機(jī)、MPU、MCU 區(qū)別與選芯指南

    很多電子初學(xué)者第一次接觸"單片機(jī)"這個(gè)詞時(shí),可能會(huì)被各種專業(yè)術(shù)語(yǔ)搞糊涂。市面上常見(jiàn)的芯片名稱還有微處理器(MPU)、微控制器(MCU),它們到底有什么區(qū)別?今天我們就用最直白的語(yǔ)言,通過(guò)現(xiàn)實(shí)中的例子,把這些概念理清楚
    的頭像 發(fā)表于 02-19 09:35 ?1280次閱讀
    電子小白<b class='flag-5'>必看</b>!單片機(jī)、MPU、MCU 區(qū)別與選芯<b class='flag-5'>避</b><b class='flag-5'>坑</b><b class='flag-5'>指南</b>

    電源設(shè)計(jì)(下)

    。在上一期《電源設(shè)計(jì)(上)》中,我們討論了電源設(shè)計(jì)中的電源功率、穩(wěn)定性、紋波控制以及尖峰和浪涌的問(wèn)題,并結(jié)合實(shí)際案例提出了相應(yīng)的應(yīng)對(duì)措施。接下來(lái),我們將繼續(xù)探索
    的頭像 發(fā)表于 12-16 11:37 ?729次閱讀
    電源設(shè)計(jì)<b class='flag-5'>避</b><b class='flag-5'>坑</b>(下)