乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      c編程規(guī)范

       Ralf_Jones 2005-12-31
      由 onis_man 于 08-11-03 02:22 發(fā)表:

      c編程規(guī)范(本人的深切體會(huì))

      c編程規(guī)范(本人的深切體會(huì))

      真要說(shuō)起來(lái),c的功能是非常強(qiáng)大的,可以說(shuō),匯編能實(shí)現(xiàn)的功能,c都能實(shí)現(xiàn)
      除了人們正常使用的功能外,還具有如下功能

      a.讀寫(xiě)寄存器
      b.讀寫(xiě)端口————因此可直接讀寫(xiě)磁盤(pán)扇區(qū),當(dāng)然這會(huì)很麻煩,而且在保護(hù)模式下,應(yīng)用
      程序好像是無(wú)法執(zhí)行這些指令的(這點(diǎn)本人記得不是很清楚)至于為什么不能執(zhí)行,
      這不是本文要討論的,有興趣的同仁可以看一下保護(hù)模式的文章,就明白了。
      c.直接對(duì)內(nèi)存尋址操做————指針可以實(shí)現(xiàn)這個(gè)功能,操作所有的內(nèi)存空間,當(dāng)然成功與否
      就依賴(lài)于在什么操作系統(tǒng)下了,實(shí)模式下對(duì)內(nèi)存訪(fǎng)問(wèn)沒(méi)有越界保護(hù),所以你在dos下可以
      讀寫(xiě)任意地址的內(nèi)存,這不是本文的重點(diǎn),在此不詳細(xì)討論)
      d.嵌入?yún)R編(遇到特別講效率的代碼,嵌入?yún)R編不失為一種好辦法)

      由于c本身對(duì)很多東西都不約束,因此編寫(xiě)c時(shí)必須要有一些規(guī)范,尤其是指針的使用。
      也正因?yàn)槿绱?,很多學(xué)校在開(kāi)設(shè)第一門(mén)編程語(yǔ)言課的時(shí)候不開(kāi)c而開(kāi)pascal,不過(guò)本人還
      是認(rèn)為先學(xué)c好。

      一。指針的規(guī)范
      雖然指針提供了一切內(nèi)存尋址的功能,但是正因?yàn)槿绱?,使用的時(shí)候一定要小心。
      1.指針定義的時(shí)候一定要初始化
      通常情況下,初始化為NULL。
      2.指針使用之前要判斷是否為空
      3.使用指針指向的內(nèi)存前要確認(rèn)該指針指向的內(nèi)存是可用的
      未初始化的指針指向的內(nèi)存不可用,初始化為NULL的也不可用,或者該指針指向已
      定義的變量,或者你為該指針動(dòng)態(tài)分配了內(nèi)存。
      4.為指針動(dòng)態(tài)分配內(nèi)存后一定要記著釋放。
      不然這塊內(nèi)存將會(huì)丟失,本程序用不到,別的也用不了。
      5.釋放內(nèi)存后一定要將該指針置為空。
      這是規(guī)范,雖然不是必要,但是它可以有效檢測(cè)你在釋放過(guò)后還錯(cuò)誤的使用該指針。
      如果操作值為NULL的指針?biāo)赶虻膬?nèi)存,目前通常的操作系統(tǒng)都會(huì)產(chǎn)生出錯(cuò)(這屬
      于保護(hù)模式的范疇)

      二。變量局部化的規(guī)范
      內(nèi)存單元本身沒(méi)有局部全局的區(qū)分,一塊內(nèi)存在被分配后均可以使用,但是變量的
      概念不同于內(nèi)存的概念,正常函數(shù)內(nèi)定義的變量均置在棧內(nèi)(什么是棧,在此不詳
      細(xì)討論),而什么時(shí)候如何為這個(gè)變量分配棧的空間,這不是我們要做的事,編譯
      器幫我們完成了這件事,所以變量的生存期是編譯器為了編程的方便所規(guī)定出來(lái)的
      概念,不然一段代碼亂糟糟的象匯編一樣,做程序員的豈不是大費(fèi)心力。

      軟件工程有一項(xiàng)理論,就是緊內(nèi)聚,松耦合,用于這兒的概念就是變量越局部越好,
      最好全局的變量一個(gè)都沒(méi)有,每個(gè)函數(shù)都只管傳入的參數(shù)和返回值。當(dāng)然要是沒(méi)有任何
      全局的信息,對(duì)于程序來(lái)說(shuō),可能還會(huì)造成很多不方便,也會(huì)導(dǎo)致函數(shù)的參數(shù)過(guò)多。所以
      怎么來(lái)把握這個(gè)度,這個(gè)是程序員的經(jīng)驗(yàn)問(wèn)題。

      基于局部化全局化的概念,變量分為如下三種
      1。函數(shù)內(nèi)局部變量:函數(shù)內(nèi)使用
      2。文件內(nèi)局部變量:文件內(nèi)的所有函數(shù)均可使用
      3。程序的全局變量:所有本程序的文件均可使用(同上一種比較,只是在頭文件中多了
      extern的聲明)
      同樣函數(shù)也存在這么幾種
      1。文件內(nèi)的函數(shù)
      2。程序的全局函數(shù)(同上一種比較,只是在頭文件內(nèi)多了該函數(shù)的原型,包含了該頭
      文件的文件當(dāng)然就可以使用這個(gè)函數(shù)樂(lè))

      三。項(xiàng)目的規(guī)范
      要把程序做大,在單個(gè)文件內(nèi)實(shí)現(xiàn)是不現(xiàn)實(shí)的,必須使用多個(gè)文件,然后鏈接成最終的可
      執(zhí)行程序。
      1。每項(xiàng)功能對(duì)應(yīng)一個(gè).c文件,而每個(gè).c文件對(duì)應(yīng)一個(gè)同名的.h文件,第二個(gè).c文件想使用
      第一個(gè).c文件定義的全局變量,全局函數(shù)等,必須包含第一個(gè)的.h文件,這是規(guī)范,多數(shù)人
      都是這么做的,當(dāng)然不這么編也沒(méi)人攔你,不過(guò)這是很多人的經(jīng)驗(yàn)。
      2。防止頭文件的重包含
      頭文件內(nèi)通常定義一些類(lèi)型、結(jié)構(gòu)等,如果被包含多次,將會(huì)出現(xiàn)類(lèi)型重復(fù)定義的錯(cuò)誤,所以
      通常使用預(yù)編譯來(lái)避免這一條,形式如下:
      #ifndefine _MYPROGRAM_H_
      #define _MYPROGRAM_H_
      /* you code */
      #endif
      需要在.h文件頭尾加上這么幾句話(huà)。雖然這個(gè)很簡(jiǎn)單,但是在實(shí)際生活中,我經(jīng)常看到有人不
      知道這一點(diǎn),似乎很多書(shū)上也沒(méi)有提到,所以在這兒說(shuō)明一下。

      四。程序編寫(xiě)的格式規(guī)范
      這也是很重要的一方面,程序代碼的好壞很重要的一方面就是易維護(hù)性。所以格式一定要標(biāo)準(zhǔn),
      讓人人都能看懂,自己也看得明白。這方面我不多說(shuō)了,大家在看源代碼的過(guò)程中很容易就能
      學(xué)到。


      這些都是c的基本規(guī)范,很多規(guī)范可以不遵從,但是顯然遵從了會(huì)有很多好處。不管你在什么開(kāi)發(fā)
      環(huán)境下,我想這些規(guī)范都是一個(gè)初學(xué)者應(yīng)當(dāng)遵守的。高手咱規(guī)范不了:)。暫時(shí)只能想起來(lái)這些東西
      ,以后說(shuō)不定還會(huì)有一些。


      此文系本人嘔心瀝血所做(,為了c的大業(yè)),高手看了千萬(wàn)不要扔柿子,有什么不對(duì)的告訴我,
      我也好有則改之,無(wú)則加勉


      由 diudiu 于 08-11-03 22:01 發(fā)表:

      鼓勵(lì),支持你。兄弟



      謝謝大家對(duì)丟丟個(gè)人站點(diǎn)的支持:
      http://www.

      致力于C /C++技術(shù)討論


      由 巴豆 于 08-12-03 13:31 發(fā)表:

      指針,該死的指針,可是不得不學(xué)呀




      別做程序了,給你們一個(gè)賺錢(qián)的秘訣,做豆腐,做硬了賣(mài)豆腐干,做稀了賣(mài)豆腐花,太稀了賣(mài)豆?jié){,豆腐賣(mài)不動(dòng)了放幾天賣(mài)臭豆腐,還賣(mài)不動(dòng)就放壞了賣(mài)腐乳!


      由 diudiu 于 08-12-03 14:05 發(fā)表:

      還可以阿,開(kāi)始有點(diǎn)麻煩。等入門(mén)了,就習(xí)慣,喜歡它了。。



      謝謝大家對(duì)丟丟個(gè)人站點(diǎn)的支持:
      http://www.

      致力于C /C++技術(shù)討論


      由 hqwjun 于 08-15-03 18:04 發(fā)表:

      支持你



      擁有你是我最大的幸福


      由 homer 于 09-07-03 06:15 發(fā)表:

      支持一下....

      個(gè)人認(rèn)為在指針應(yīng)用方面我還是比較自覺(jué)的。呵呵。

      關(guān)于重包含的問(wèn)題還真從來(lái)沒(méi)有注意過(guò)。


      由 smcree 于 09-22-03 18:59 發(fā)表:

      支持你


      由 sadly 于 09-24-03 16:34 發(fā)表:

      支持一下~



      搶劫中國(guó)銀行 實(shí)現(xiàn)心中理想

      QQ:824008 ICQ:2896699 MSN:goodyork@hotmail.com


      由 jx123jx123 于 10-08-03 00:34 發(fā)表:

      贊成 支持

      寫(xiě)的好

      我是從basic轉(zhuǎn)而學(xué)c的
      對(duì)指針的體會(huì)最深
      干開(kāi)始學(xué)的時(shí)候好痛苦
      老是用錯(cuò)
      現(xiàn)在對(duì)了
      感覺(jué)指針好好用喲



      永遠(yuǎn)的westwood?。?!


      由 tellmewhy 于 11-16-03 20:51 發(fā)表:

      我也支持一下,雖然是很舊的帖子了!



      There is nothing permanent except change.


      由 htll 于 11-30-03 06:55 發(fā)表:

      指針真是個(gè)好東西呀?。?/P>


      由 wangfeng_1981 于 12-10-03 02:10 發(fā)表:

      關(guān)于 "防止頭文件的重包含" 的一點(diǎn)看法!

      我覺(jué)得 預(yù)編譯應(yīng)該包含 頭文件,而不是代碼!

      #ifndefine _HEADERFILE_H_
      #define _HEADERFILE_H_

      #include("headerfile.h")
      ....

      #endif

      如果說(shuō)得不正確,請(qǐng)指正!



      ==饑渴稚嫩的腦袋!


      由 日出東方XP 于 12-15-03 19:12 發(fā)表:

      指針----內(nèi)存地址也。



      希望直接打印的,希望打開(kāi)網(wǎng)頁(yè)后全屏顯示的,希望點(diǎn)了按鈕后直接退出瀏覽器的進(jìn)來(lái),希望設(shè)置客戶(hù)端分辨率的進(jìn)來(lái)
      永遠(yuǎn)愛(ài)你—— 東河頭村——生我養(yǎng)我的地方
      永遠(yuǎn)愛(ài)你—— 石家莊——我生活的地方
      永遠(yuǎn)愛(ài)你—— 河北經(jīng)貿(mào)大學(xué)——我成長(zhǎng)、我起步的地方


      由 onis_man 于 12-28-03 22:42 發(fā)表:

      Re: 關(guān)于 "防止頭文件的重包含" 的一點(diǎn)看法!

      quote:
      最初由 wangfeng_1981 發(fā)布
      我覺(jué)得 預(yù)編譯應(yīng)該包含 頭文件,而不是代碼!

      #ifndefine _HEADERFILE_H_
      #define _HEADERFILE_H_

      #include("headerfile.h")
      ....

      #endif

      如果說(shuō)得不正確,請(qǐng)指正!



      不太清楚你說(shuō)的什么意思,預(yù)編譯是正式編譯之前執(zhí)行的一次編譯,生成目標(biāo)文件,正式編譯對(duì)預(yù)編譯生成的目標(biāo)文件再次進(jìn)行編譯,通過(guò)預(yù)編譯,不僅可以防止這種重包含問(wèn)題,而且還可以編寫(xiě)release和debug的不同類(lèi)的二進(jìn)制文件,例如
      #ifdefine DEBUG
      debug code
      #endif
      這樣如果編譯release版本,debug code在預(yù)編譯生成的目標(biāo)文件里不會(huì)有,精簡(jiǎn)了最終生成的二進(jìn)制文件的大小。
      除此以外,預(yù)編譯也經(jīng)常用來(lái)進(jìn)行跨平臺(tái)程序的編寫(xiě),例如

      #ifdefine _IA64_
      intel 64位平臺(tái)下運(yùn)行的代碼
      #endif

      #ifdefine _BSD_
      unix BSD系統(tǒng)下運(yùn)行的代碼
      #endif


      由 plusKid 于 03-16-04 22:33 發(fā)表:

      hehe!

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶(hù) 評(píng)論公約

        類(lèi)似文章 更多