C語(yǔ)言易錯(cuò)點(diǎn)總結(jié)

#include < > 和#include " "的區(qū)別:

  • #include < >編譯器在預(yù)設(shè)目錄中搜索頭文件,一般是庫(kù)文件所在目錄
  • #include " "編譯器在當(dāng)前工程文件目錄中搜索頭文件,如果搜索不到,去庫(kù)文件所在目錄搜索頭文件。

變量的本質(zhì):

1.開(kāi)辟空間 <p>2.往空間里面放內(nèi)容 <p> 3.從空間里把內(nèi)容讀取出來(lái)

常量(const關(guān)鍵字)

在創(chuàng)建的時(shí)候初始化,一經(jīng)賦值不能在改變

枚舉類型(enum)

語(yǔ)法:enum 枚舉名{枚舉常量1,...} 枚舉變量名
優(yōu)點(diǎn):增強(qiáng)代碼的可維護(hù)性

自增 和自減運(yùn)算

  • i++和i--;

先使用當(dāng)前變量的值,在進(jìn)行自增自減運(yùn)算

  • ++i和--i

先進(jìn)行自增自減,再使用變化后的新值

例1

   #include <stdio.h>
   int main(int argc, const char * argv[])
   {
      int a = 1, b = 2, c = 3;
     if(a++ == 1 && (++b == 3 || c++ == 3))
     {  
        printf("%d %d %d\n", a, b, c);
     }
        return 0;
   }
   輸出結(jié)果為:233

分析上面的例子,a++ == 1, a先是1==1成立,在自加1, a = 2;++b == 3,b 先自加1 ->b = 3; b == 3 成立,邏輯或后面的不再判斷, 所以c = 3

  • sizeof是運(yùn)算符(計(jì)算操作數(shù)的字節(jié)數(shù))

邏輯或(||)和邏輯與(&&)(見(jiàn)例1)

注意:

如果||前面有一個(gè)條件為真,后面的都不再做判斷;
如果&&前面有一個(gè)為假,后面的條件不再判斷;

  • * 一元否定運(yùn)算符( ! )

例2

 #include <stdio.h>
 int main(int argc, const char * argv[]) {
        int a = 5, b = 0;
       if(!b)//if(!b)等價(jià)于if(b == 0)
        {
            b = a++;
        }
        else
        {
            b = --a;
        }
        printf("a = %d,b = %d\n", a, b);
    }
 輸出結(jié)果為:a = 6,b = 5

for循環(huán)的執(zhí)行順序

(先執(zhí)行語(yǔ)句1;然后執(zhí)行語(yǔ)句2判斷真假,真的話執(zhí)行循環(huán)體里的語(yǔ)句;當(dāng){}內(nèi)語(yǔ)句執(zhí)行完后執(zhí)行語(yǔ)句3;再判斷2的真假...知道2不滿足時(shí)退出for循環(huán)。)

注意:

在使用while{}和do while{}循環(huán)時(shí),一定要修改循環(huán)變量的值,避免造成死循環(huán)。

例3

for循環(huán)的執(zhí)行順序

函數(shù)

  • 函數(shù)的定義

返回值類型 函數(shù)名 (形參列表)

  • 函數(shù)調(diào)用的實(shí)質(zhì)

函數(shù)相當(dāng)于一個(gè)指針,存儲(chǔ)的是這個(gè)函數(shù)代碼區(qū)的地址編號(hào)

  • 函數(shù)傳參的三種方式(單向傳遞)實(shí)參—>形參
    傳值
    傳指針(地址)
    傳引用(C++)

字符串

字符串函數(shù)

  • int strlen(const char *)計(jì)算字符串長(zhǎng)度;
  • char *strcpy(char *to, const char *from)字符串拷貝函數(shù)
  • char *strcat(char *, const char *)字符串拼接函數(shù)
  • int strcmp(const char *str1, const char *str2)字符串比較函數(shù)(返回值三種>0,==0,<0)
Snip20160727_3.png

結(jié)構(gòu)體的sizeof的計(jì)算

先看結(jié)構(gòu)體中最大字節(jié)的類型;然后以最大字節(jié)數(shù)為一行分配內(nèi)存;當(dāng)分配到相應(yīng)類型時(shí),數(shù)字標(biāo)號(hào)(從0開(kāi)始)一定要能整除當(dāng)前類型的字節(jié)數(shù),不能整除就往后偏移。當(dāng)最后分配的內(nèi)存不足一行時(shí),按一行算。

宏定義(#define)

注意點(diǎn):#define max(A, B) ((A) >(B) ? (A) : (B));
參數(shù)可能是一個(gè)表達(dá)式,所以要加( );
宏定義是在預(yù)編譯的時(shí)候替換,不需要寫類型。

break continue 和return

  • break

1.用在switch結(jié)構(gòu),作用是跳出switch結(jié)構(gòu)
2.用在循環(huán)語(yǔ)句中,跳出循環(huán),執(zhí)行循環(huán)語(yǔ)句下面的語(yǔ)句。如果是多層循環(huán),只會(huì)跳出當(dāng)層循環(huán)。

  • continue

用于循環(huán)體內(nèi)部,作用是結(jié)束本次循環(huán),開(kāi)始新的循環(huán)。所以當(dāng)執(zhí)行continue語(yǔ)句之后,continue后面的循環(huán)語(yǔ)句將不再執(zhí)行。

  • return

跳出當(dāng)前的函數(shù),當(dāng)前函數(shù)return后面的語(yǔ)句不會(huì)再執(zhí)行。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容