<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 牛人業(yè)話 > 掌握C語言的必知要點

          掌握C語言的必知要點

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

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

          本文引用地址:http://www.ex-cimer.com/article/265682.htm

            1、 Switch

            先來看一個簡單的實例

            Switch(cmd){

            Case 1:func1();break;

            Case 2:func2();

            Case 3:func3();break

            Default:func();break;

            }

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

            2、 函數(shù)聲明

            Char *func(char *,char *);

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

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

            3、 遞歸

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

            4、 數(shù)組

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

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

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

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

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

            5、 Const

            只要有可能,函數(shù)的指針形參都應(yīng)該聲明為const,

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

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

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

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

            (3) 這類聲明允許向函數(shù)傳遞const參數(shù)

            6、 Static

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

            因此,當(dāng)數(shù)組初始化于一個函數(shù)中時,每次調(diào)用函數(shù),都會對數(shù)組初始化,但若把數(shù)組聲明為static,數(shù)組的初始化只需在程序開始前執(zhí)行一次。

            7、 效率與

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

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




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

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();