<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 牛人業(yè)話(huà) > 掌握C語(yǔ)言的必知要點(diǎn)

掌握C語(yǔ)言的必知要點(diǎn)

作者:areak 時(shí)間:2014-11-20 來(lái)源:電子產(chǎn)品世界 收藏

  溫故而知新,可以為師矣,初學(xué)一門(mén)語(yǔ)言的時(shí)候,我們會(huì )躍躍欲試,并沒(méi)有真正深入的理解,經(jīng)過(guò)一段時(shí)間的實(shí)踐,會(huì )產(chǎn)生困惑,學(xué)而不思則殆,這時(shí)回過(guò)頭來(lái)看書(shū),會(huì )有意想不到的收獲,會(huì )豁然開(kāi)朗,會(huì )讓你在以后的實(shí)踐中更加運用自如,下面再來(lái)看看一些的知識要點(diǎn)及注意事項,一起來(lái)溫習一下。

本文引用地址:http://dyxdggzs.com/article/265682.htm

  1、 Switch

  先來(lái)看一個(gè)簡(jiǎn)單的實(shí)例

  Switch(cmd){

  Case 1:func1();break;

  Case 2:func2();

  Case 3:func3();break

  Default:func();break;

  }

  如果cmd==2,程序執行switch后,會(huì )直接轉到case 2,執行func2();之后會(huì )繼續進(jìn)入case 3,執行func3();遇到break語(yǔ)句之后退出switch,因此如果你本意不想執行func3();一定要在func2();后面加上break。加上default是一個(gè)好習慣,default可以放在任何一個(gè)位置,后面也要加上break,即使放在最后也要加,以免以后加代碼時(shí)忘記添加break導致意想不到的錯誤。

  2、 函數聲明

  Char *func(char *,char *);

  Char *func(char *dst,char *src);

  這兩個(gè)聲明都是正確的,但是第二個(gè)在原型中加上了參數的名字,更容易讓人看懂。

  3、 遞歸

  通過(guò)運行時(shí)堆棧支持遞歸函數的實(shí)現,大體流程是這樣,遞歸函數會(huì )調用函數本身,每進(jìn)行一次調用,都將創(chuàng )建一批變量,而把前一次創(chuàng )建的變量壓棧,當遞歸條件不滿(mǎn)足時(shí),開(kāi)始將變量按順序出棧,直到所有變量被彈出,要注意的是,除非你很有把握,而且確保使用遞歸函數可大大提高效率,否則不要輕易使用遞歸,這會(huì )使程序的可讀性變差,還可能造成意想不到的冗余。

  4、 數組

  數組是相同類(lèi)型的一組值的集合,int b[4],b[4]內部可存儲4個(gè)int型數據,那么b的類(lèi)型是什么?它表示的是整個(gè)數組嗎?在C中,數組名的值是一個(gè)指針常量,指向數組第一個(gè)元素,而這個(gè)指針常量的類(lèi)型取決于數組元素的類(lèi)型,注意這個(gè)值是指針常量,而不是指針變量,它的值不能修改,因為如果你修改了這個(gè)常量的值,相當于將整個(gè)數組移動(dòng)內存的其它位置,而且在程序運行時(shí),移動(dòng)數組的行為也是無(wú)效的。

  int a[4]; int *c; int b[4];

  C = &a[0];與c=a;執行的任務(wù)是一樣的,就是把C指向數組的首個(gè)元素。

  而b=a;這是非法的,因為a與b均是指針常量,如果想把a的值全部賦給b,需要借助循環(huán)來(lái)實(shí)現。

  a=c;也是非法的,因為a的值也不應該被修改。

  5、 Const

  只要有可能,函數的指針形參都應該聲明為const,

  Void strcpy(char *buffer, char const *string);

  這個(gè)函數的目的是把string的內容復制到buffer,形參string被聲明為一個(gè)指向const字符的指針,這樣做的好處有3個(gè):

  (1) 讀者不必看函數體就知道該數據不會(huì )被修改

  (2) 編譯器可以捕獲任何試圖修改該數據的錯誤

  (3) 這類(lèi)聲明允許向函數傳遞const參數

  6、 Static

  數組和變量的初始化方式取決于它們的存儲類(lèi)型,存儲于靜態(tài)內存的數組或變量只初始化一次,當程序執行時(shí),靜態(tài)數組已經(jīng)初始化完畢,對于自動(dòng)變量而言,由于自動(dòng)變量位于運行時(shí)堆棧中,執行流每次進(jìn)入它們所在的代碼塊,變量所處的內存位置可能不同,如果自動(dòng)變量的聲明中給出了初始值,每次執行流進(jìn)入變量所在的作用域,變量就被一條隱士的賦值語(yǔ)句初始化,如果是數組元素較多的情況,初始化時(shí)間也是比較可觀(guān)的。

  因此,當數組初始化于一個(gè)函數中時(shí),每次調用函數,都會(huì )對數組初始化,但若把數組聲明為static,數組的初始化只需在程序開(kāi)始前執行一次。

  7、 效率與

  編寫(xiě)代碼不可一味的追求效率,不要寫(xiě)晦澀難懂的程序來(lái)彰顯自己的語(yǔ)言功底,這只會(huì )讓程序的變差,如果程序的改進(jìn)換來(lái)的效率并不可觀(guān),就不要為了那幾十微秒的時(shí)間而給后續維護人員帶來(lái)困惑,它付出的代價(jià)是使得程序難于編寫(xiě)在前,難與維護在后,而程序維護是軟件產(chǎn)品的主要成本所在,復雜的用法比簡(jiǎn)單的用法所涉及的風(fēng)險要大得多。

c語(yǔ)言相關(guān)文章:c語(yǔ)言教程




關(guān)鍵詞: C語(yǔ)言 可維護性

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>