精品网站999www_91福利视频网站_天天想你在线观看完整版电影免费_精品一区久久久久久_看欧美ab黄色大片视频免费_欧美一级片在线_国产乱码精品一区二区三区卡 _91成人看片片_嫩草av久久伊人妇女超级a_亚洲色大成网站www久久九九_国产精品久久久久久久久久久久_国产51自产区

必勝高考網 > 計算機類 > 計算機等級 > 資訊 >

全國計算機等級考試四級上機編程修養(下)

時間: 家輝2 資訊

  }else{

  /* 輸出錯誤信息 */

  printf("error ......\n");

  return ( FALSE );

  }

  這種結構很不好,特別是如果“正常處理代碼”很長時,對于這種情況,最好不要用else。先判斷錯誤,如:

  if ( ch < ’0’ || ch > ’9’ ){

  /* 輸出錯誤信息 */

  printf("error ......\n");

  return ( FALSE );

  }

  ......

  這樣的結構,不是很清楚嗎?突出了錯誤的條件,讓別人在使用你的函數的時候,第一眼就能看到不合法的條件,于是就會更下意識的避免。

  7、頭文件中的#ifndef

  ——————————

  千萬不要忽略了頭件的中的#ifndef,這是一個很關鍵的東西。比如你有兩個C文件,這兩個C文件都include了同一個頭文件。而編譯時,這兩個C文件要一同編譯成一個可運行文件,于是問題來了,大量的聲明沖突。

  還是把頭文件的內容都放在#ifndef和#endif中吧。不管你的頭文件會不會被多個文件引用管你的頭文件會不會被多個文件引用,你都要加上這個。一般格式是這樣的:

  #ifndef <標識>

  #define <標識>

  ......

  ......

  #endif

  <標識>在理論上來說可以是自由命名的,但每個頭文件的這個“標識”都應該是唯一的。標識的命名規則一般是頭文件名全大寫,前后加下劃線,并把文件名中的“.”也變成下劃線,如:

  stdio.h

  #ifndef _STDIO_H_

  #define _STDIO_H_

  ......

  #endif

  (BTW:預編譯有多很有用的功能。你會用預編譯嗎?)

  堆內存分配

  —————

  char*

  AllocStrFromHeap(int len)

  {

  char *pstr;

  if ( len <= 0 ) return NULL;

  return ( char* ) malloc( len );

  } 轉貼于 265考試網

  對于第一個函數,那塊pstr的內存在函數返回時就被系統釋放了。于是所返回的char*什么也沒有。而對于第二個函數,是從堆上分配內存,所以哪怕是程序退出時,也不釋放,所以第二個函數的返回的內存沒有問題,可以被使用。但一定要調用free釋放,不然就是Memory Leak!

  在堆上分配內存很容易造成內存泄漏,這是C/C++的最大的“克星”,如果你的程序要穩定,那么就不要出現Memory Leak。所以,我還是要在這里千叮嚀萬囑付,在使用malloc系統函數(包括calloc,realloc)時千萬要小心。

  記得有一個UNIX上的服務應用程序,大約有幾百的C文件編譯而成,運行測試良好,等使用時,每隔三個月系統就是down一次,搞得許多人焦頭爛額,查不出問題所在。只好,每隔兩個月人工手動重啟系統一次。出現這種問題就是Memery Leak在做怪了,在C/C++中這種問題總是會發生,所以你一定要小心。一個Rational的檢測工作——Purify,可以幫你測試你的程序有沒有內存泄漏。

  我保證,做過許多C/C++的工程的程序員,都會對malloc或是new有些感冒。當你什么時候在使用malloc和new時,有一種輕度的緊張和惶恐的感覺時,你就具備了這方面的修養了。

  對于malloc和free的操作有以下規則:

  1) 配對使用,有一個malloc,就應該有一個free。(C++中對應為new和delete)

  2) 盡量在同一層上使用,不要像上面那種,malloc在函數中,而free在函數外。最好在同一調用層上使用這兩個函數。

  3) malloc分配的內存一定要初始化。free后的指針一定要設置為NULL。注:雖然現在的操作系統(如:UNIX和Win2k/NT)都有進程內存跟蹤機制,也就是如果你

  有沒有釋放的內存,操作系統會幫你釋放。但操作系統依然不會釋放你程序中所有產生了Memory Leak的內存,所以,最好還是你自己來做這個工作。(有的時候不知不覺就出現Memory Leak了,而且在幾百萬行的代碼中找無異于海底撈針,Rational有一個工具叫Purify,可能很好的幫你檢查程序中的Memory Leak)

  9、變量的初始化

  接上一條,變量一定要被初始化再使用。C/C++編譯器在這個方面不會像J***A一樣幫你初始化,這一切都需要你自己來,如果你使用了沒有初始化的變量,結果未知。好的程序員從來都會在使用變量前初始化變量的。如:

  1) 對malloc分配的內存進行memset清零操作。(可以使用calloc分配一塊全零的內存)

  2) 對一些棧上分配的struct或數組進行初始化。(最好也是清零)不過話又說回來了,初始化也會造成系統運行時間有一定的開銷,所以,也不要對所有的變量做初始化,這個也沒有意義。好的程序員知道哪些變量需要初始化,哪些則不需要。

  如:以下這種情況,則不需要。

  char *pstr; /* 一個字符串 */

  pstr = ( char* ) malloc( 50 );

  if ( pstr == NULL ) exit(0);

  strcpy( pstr, "Hello Wrold" );

  strcpy( pstr, "Hello Wrold" );

  但如果是下面一種情況,最好進行內存初始化。(指針是一個危險的東西,一定要初始化 )

  char **pstr; /* 一個字符串數組 */

  pstr = ( char** ) malloc( 50 );

  if ( pstr == NULL ) exit(0);

  /* 讓數組中的指針都指向NULL */

  memset( pstr, 0, 50*sizeof(char*) );

  而對于全局變量,和靜態變量,一定要聲明時就初始化。因為你不知道它第一次會在哪里被使用。所以使用前初始這些變量是比較不現實的,一定要在聲明時就初始化它們。如:

  Links *plnk = NULL; /* 對于全局變量plnk初始化為NULL */

  10、h和c文件的使用

  H 文件和C文件怎么用呢?一般來說,H文件中是declare(聲明),C文件中是define(定義)。因為C文件要編譯成庫文件(Windows下是. obj/.lib,UNIX下是.o/.a),如果別人要使用你的函數,那么就要引用你的H文件,所以,H文件中一般是變量、宏定義、枚舉、結構和函數接口的聲明,就像一個接口說明文件一樣。而C文件則是實現細節。

  H文件和C文件最大的用處就是聲明和實現分開。這個特性應該是公認的了,但我仍然看到有些人喜歡把函數寫在H文件中,這種習慣很不好。(如果是C++話,對于其模板函數,在VC中只有把實現和聲明都寫在一個文件中,因為 VC不支持export關鍵字)。而且,如果在H文件中寫上函數的實現,你還得在makefile中把頭文件的依賴關系也加上去,這個就會讓你的 makefile很不規范。

  最后,有一個最需要注意的地方就是:帶初始化的全局變量不要放在H文件中!

  例如有一個處理錯誤信息的結構:

  char* errmsg[] = {

  /* 0 */ "No error",

  /* 1 */ "Open file error",

  /* 2 */ "Failed in sending/receiving a message",

  /* 3 */ "Bad arguments",

  /* 4 */ "Memeroy is not enough",

  /* 5 */ "Service is down; try later",

  /* 6 */ "Unknow information",

  /* 7 */ "A socket operation has failed",

  /* 8 */ "Permission denied",

  /* 9 */ "Bad configuration file format",

  /* 10 */ "Communication time out",

  ......

  ......

  };

  請不要把這個東西放在頭文件中,因為如果你的這個頭文件被5個函數庫(.lib或是.a)所用到,于是他就被鏈接在這5個.lib或.a中,而如果你的一個程序用到了這5個函數庫中的函數,并且這些函數都用到了這個出錯信息數組。那么這份信息將有5個副本存在于你的執行文件中。如果你的這個errmsg很大的話,而且你用到的函數庫更多的話,你的執行文件也會變得很大。

  正確的寫法應該把它寫到C文件中,然后在各個需要用到errmsg的C文件頭上加上 extern char* errmsg[]; 的外部聲明,讓編譯器在鏈接時才去管他,這樣一來,就只會有一個errmsg存在于執行文件中,而且,這樣做很利于封裝。

  我曾遇到過的最瘋狂的事,就是在我的目標文件中,這個errmsg一共有112個副本,執行文件有8M左右。當我把errmsg放到C文件中,并為一千多個 C文件加上了extern的聲明后,所有的函數庫文件尺寸都下降了20%左右,而我的執行文件只有5M了。一下子少了3M啊。

  [ 備注 ]

  有朋友對我說,這個只是一個特例,因為,如果errmsg在執行文件中存在多個副本時,可以加快程序運行速度,理由是errmsg的多個復本會讓系統的內存換頁降低,達到效率提升。像我們這里所說的errmsg只有一份,當某函數要用errmsg時,如果內存隔得比較遠,會產生換頁,反而效率不高。

  生副本導致執行文件尺寸變大,不僅增加了系統裝載時間,也會讓一個程序在內存中占更多的頁面。而對于errmsg這樣數據,一般來說,在系統運行時不會經常用到,所以還是產生的內存換頁也就不算頻繁。權衡之下,還是只有一份errmsg的效率高。即便是像logmsg這樣頻繁使用的的數據,操作系統的內存調度算法會讓這樣的頻繁使用的頁面常駐于內存,所以也就不會出現內存換頁問題了。

55480 91精品国产91久久久久久| 日本欧美一区二区在线观看| 日本成人精品视频| 国产精品国产三级国产专业不| 中字幕一区二区三区乱码| 久艹在线观看视频| 国产情侣免费视频| 天堂成人免费av电影一区| 国产乱码精品一区二区三区忘忧草| 国产超碰在线一区| 久久精品视频免费| 欧美日韩国产专区| 亚洲第一视频网| 美女福利精品视频| 国产精品亚洲综合天堂夜夜| 久久久精品国产一区二区三区| 亚洲午夜精品国产| 亚洲欧美激情网| 在线免费观看黄色小视频| 日本妇女毛茸茸| 国产免费久久久| 国产一区二区免费在线| 亚洲视频资源在线| 欧美一级电影网站| 欧美精品videossex性护士| 成人h猎奇视频网站| 亚洲一区三区在线观看| 99九九99九九九99九他书对| 在线视频这里只有精品| 国产尤物视频在线观看| 九九**精品视频免费播放| 国产日韩欧美电影| 欧美午夜精品久久久久久超碰| 亚洲天堂av网| 成人在线中文字幕| 青青草国产免费| 一区二区免费在线观看视频| 青青国产在线视频| 精品一区二区三区香蕉蜜桃| 亚洲女人****多毛耸耸8| 欧美一级片在线看| 日本免费久久高清视频| 热久久最新地址| 农村末发育av片一区二区| 日本在线视频免费观看| 加勒比av一区二区| 色天天综合久久久久综合片| 欧美老女人xx| 亚洲mv在线看| 久久发布国产伦子伦精品| 一级成人黄色片| 成人在线视频一区二区| 欧美三级电影精品| 欧美高清激情视频| 路边理发店露脸熟妇泻火| 精品人妻少妇嫩草av无码| 国产精品色综合| 国产精品久久久久久久久免费丝袜| 精品福利一二区| 亚洲r级在线观看| 色播五月综合网| 波多野结衣小视频| 欧美激情中文字幕一区二区| 亚洲国产女人aaa毛片在线| 91网站免费看| 一区二区三区视频在线观看免费| 久久久免费高清视频| 成人av网站在线观看| 精品国产第一区二区三区观看体验 | 看黄色录像一级片| 麻豆一区二区三区| 欧美美女bb生活片| 91色视频在线导航| 国产性生活毛片| 亚洲 另类 春色 国产| 日韩欧美在线中文字幕| 91精品国产精品| 黄色片视频在线播放| av手机天堂网| 亚洲成a人v欧美综合天堂| 国内成人精品一区| 中文字幕在线观看第三页| 一级黄色录像大片| 亚洲国产精品久久不卡毛片| 久久久久久久999精品视频| 国产精品国产亚洲精品看不卡| 国产成人无码精品| 一区在线播放视频| 97香蕉超级碰碰久久免费的优势| 黄色a级片免费| 国产超碰人人模人人爽人人添| 亚洲一区二区三区视频在线播放 | 色综合久久88色综合天天 | 日韩一区二区三区视频在线观看| 粉嫩高清一区二区三区精品视频| 国产黄色网址在线观看| 大陆成人av片| 欧美日本在线视频中文字字幕| 日韩在线一级片| а√中文在线资源库| 欧美日韩国产综合一区二区| 国产传媒一区二区三区| 免费精品在线视频| 国产精品久久久久永久免费观看| 欧美亚洲另类视频| 国产激情视频网站| caoporm超碰国产精品| 欧美精品在线播放| 三上悠亚 电影| 国产白丝精品91爽爽久久| 色妞欧美日韩在线| 性生活免费在线观看| 美女视频一区二区| 日韩在线观看免费全| 91极品尤物在线播放国产| 日本不卡一区二区| 亚洲天堂久久av| 少妇激情一区二区三区| 加勒比av一区二区| 欧美丰满老妇厨房牲生活| 国产chinesehd精品露脸| 成人福利视频网站| 国产成人啪精品视频免费网| 91精彩刺激对白露脸偷拍| 国产午夜亚洲精品午夜鲁丝片| 日韩av电影在线播放| 欧美人与禽zoz0善交| 亚洲美女视频在线观看| 久久综合九色综合网站| 进去里视频在线观看| 91精品国产综合久久久久| 国产精品成人久久电影| 麻豆精品一区二区三区| 欧美激情亚洲国产| 日韩精品久久久久久久的张开腿让| 亚洲黄一区二区三区| 日韩久久不卡| 老司机午夜精品视频| 久久久久久久色| 三级黄色录像视频| 欧美色图天堂网| 欧美不卡在线播放| 成人午夜视频免费看| 国产精品专区h在线观看| 久久国产精品系列| 亚洲成人精品久久久| 天堂av在线8| 国产精品丝袜久久久久久app| 国产伦精品一区二区三区四区视频| 草莓视频18免费观看| 日韩精品免费在线视频| 秘密基地免费观看完整版中文 | 亚洲视频在线观看免费视频| 亚洲欧美一区二区三区情侣bbw| wwwxxxx在线观看| 一区二区三区欧美久久| 综合视频免费看| 国产精品亚洲综合一区在线观看| 国产日韩中文字幕| 自拍偷拍色综合| 亚洲欧美一区二区三区在线| 亚洲AV无码国产精品| 香蕉影视欧美成人| 欧美日韩二三区| 国产亚洲综合色| 日韩一区二区电影在线观看| 九色|91porny| 国产精品久久久久久免费观看| 性猛交富婆╳xxx乱大交天津| 麻豆成人在线看| 在线观看精品国产| 中文字幕欧美亚洲| 九九热只有精品| 亚洲国语精品自产拍在线观看| 欧美日韩人妻精品一区在线| 91久久精品一区二区| 91欧美视频在线| 精品magnet| 男女视频一区二区三区| 亚洲综合一区二区三区| 色七七在线观看| 亚洲成av人**亚洲成av**| 在线观看免费成人av| 亚洲一线二线三线视频| 亚洲三级视频网站| 欧美性xxxxxxxxx| 永久看看免费大片| 欧美日韩亚洲综合在线| 日韩精品无码一区二区三区久久久 | 69视频在线播放| 国产精品视频a| 国产精品高潮视频| 亚洲av成人无码网天堂| 国产区日韩欧美| 国产揄拍国内精品对白| 日韩高清国产一区在线观看| 成人免费高清在线| 久久久久久av无码免费网站下载| 中文字幕亚洲在| 99热这里只有精品在线播放| 在线免费av一区| 91狠狠综合久久久久久| 在线视频欧美日韩| 中文天堂在线资源| 国产精品aaa| 久久激五月天综合精品| 中文字幕在线亚洲三区| 亚洲免费观看视频| 亚洲精品乱码久久久久久蜜桃欧美| 欧美一区二区女人| 国产一级在线播放| 97视频色精品| 久久精品国产网站| 欧美aaa在线观看| 亚洲成人精品一区二区| 女同性恋一区二区三区| 在线国产精品视频| 精品毛片一区二区三区| 黄色小网站91| 国产精品久久久久久久久图文区 | 国产成人免费观看| 99精品欧美一区| 不卡影院一区二区| 日韩欧美不卡一区| 免费看日批视频| 国产免费一区二区三区| 国产精品久久久久一区| 国产a级黄色片| 久久视频在线直播| 秋霞午夜鲁丝一区二区老狼| 成人在线视频一区二区三区| 欧美视频一区二区在线观看| 久久久久亚洲av成人片| 91免费在线视频| 中文字幕一区二区三区在线播放| 五十路六十路七十路熟婆| 欧美国产精品人人做人人爱 | 久久久久无码精品国产| 国产日产亚洲精品| 国产精品久久久久久久第一福利| 国产国语性生话播放| 久久久久久中文| 国产999精品久久久久久绿帽| 日韩视频第二页| 日韩精品黄色网| 亚洲风情第一页| 国产乱子伦精品无码专区| 91精品国产一区二区三区| 在线观看毛片网站| 一区二区在线不卡| 欧美年轻男男videosbes| 中文无码av一区二区三区| 精品亚洲欧美日韩| 欧美视频免费在线观看| 精品国产一区二区三区四| 久久亚洲一区二区| 欧美三日本三级三级在线播放| 在线免费观看av网址| 中文视频一区视频二区视频三区| 欧美日韩精品福利| 国产黄色一区二区| 九九爱精品视频| 亚洲天堂av在线播放| 国产精品一二三四五| 182在线视频| 国产又爽又黄的激情精品视频| 亚洲私人影院在线观看| 精品无码人妻一区二区三区品| 麻豆av一区二区| 欧美一级一级性生活免费录像| xxxwww在线观看| 在线观看国产一级片| 97精品国产97久久久久久| 欧美国产精品一区二区| 欧美色图一区二区| 亚洲日本精品一区| 亚洲欧美日韩国产中文| 国产精品1区二区.| 99久久人妻无码精品系列| 91夜夜未满十八勿入爽爽影院| 亚洲国产精品一区二区久久| 中文字幕+乱码+中文字幕明步 | 国产夫绿帽单男3p精品视频| 99热成人精品热久久66| 欧美黑人极品猛少妇色xxxxx| 欧美激情一区二区三区| 国产精品自拍视频一区| 妞干网在线播放| 久久综合免费视频影院| 国产精品青草综合久久久久99| 男人天堂中文字幕| a在线视频观看| 国产+人+亚洲| 夜夜精品浪潮av一区二区三区| 中文字幕av影视| 亚洲一级片免费| 国产999精品| 欧美视频在线播放| 极品少妇xxxx精品少妇| 中文字幕观看av| 国内自拍中文字幕| 91国自产精品中文字幕亚洲| 精品成人av一区| 日本欧美在线观看| 男人av资源站| 成品人视频ww入口| 国产成人精品久久二区二区91| 欧美性一二三区| 国产a视频精品免费观看| 精品深夜av无码一区二区老年| 喜爱夜蒲2在线| 69视频在线免费观看| 欧美影院精品一区| 国产激情一区二区三区四区 | 国产精品天天av精麻传媒| 国产乱人伦真实精品视频| 欧美精品v国产精品v日韩精品| 国产精品亚洲人在线观看| 日韩黄色一级大片| 欧美在线a视频| 久久综合精品一区| 欧美韩国理论所午夜片917电影| 欧美午夜性色大片在线观看| 国产另类ts人妖一区二区| 天堂а√在线中文在线新版| 91丝袜超薄交口足| 日韩欧美亚洲在线| 国产91精品久久久久久久| 91麻豆精品国产91久久久更新时间 | 欧美人妻精品一区二区三区| 日本老熟妇毛茸茸| 欧美性大战久久久久| 久久免费少妇高潮久久精品99| 欧美片在线播放| 亚洲婷婷在线视频| 久久国产生活片100| av片免费观看| 波多野结衣 在线| 欧美牲交a欧美牲交| 岛国一区二区三区高清视频| 久久国产精品久久久久| 欧美人动与zoxxxx乱| 亚洲四区在线观看| 粉嫩aⅴ一区二区三区四区五区| 国产乱色精品成人免费视频| 无码人妻aⅴ一区二区三区69岛| 91精品91久久久中77777老牛| 国内一区在线| 国产精品极品尤物在线观看 | 一本久道中文字幕精品亚洲嫩 | 国产精品久久久久久免费免熟| 无码人妻精品一区二区中文| 欧美私人情侣网站| 亚洲视频精品一区| a级国产乱理论片在线观看99| 久久999免费视频| 日韩国产激情在线| 欧美性猛交xxxx乱大交退制版| 亚洲国产精品成人综合色在线婷婷| 日韩国产精品久久| 97人人爽人人爽人人爽| 国产亚洲精品久久777777| 久久久久久亚洲中文字幕无码| 男女视频在线看| 日本欧美视频在线观看| 亚洲三区在线| 国产精品视频黄色| 日韩电影网在线| 欧美成人一区二区三区在线观看 | 一级黄色免费毛片| 中文字幕av不卡| 亚洲免费不卡| 国产精品成人aaaa在线| 亚洲一区av在线| 日本精品一区二区三区不卡无字幕| 日韩手机在线观看| 精品视频一区 二区 三区| 欧美日韩一卡二卡三卡| 亚洲自拍偷拍色图| 日韩特级黄色片| 欧美日韩国产成人在线91| 欧美精品一区二区三区视频| 日韩亚洲一区在线播放| 国产成人精品亚洲午夜麻豆| 国产国语videosex另类| 超薄肉色丝袜一二三| 高清不卡一区二区在线| 欧美精品一区二区三区四区| 波多野结衣综合网| 国产高清精品在线| 国产成人精品亚洲精品| 偷拍夫妻性生活| 精品一区二区在线看| 这里只有精品在线播放| 日韩有码免费视频| 99视频在线观看一区三区| 在线成人性视频| 亚洲精品大片www| 日韩免费av电影| 日本成人超碰在线观看| 国产精品免费视频久久久| 成人黄色免费视频| www国产精品视频| 一区二区精品在线观看| 国产精品毛片久久久久久久av | 精品国产一区二区精华| 国产日韩视频一区| 日韩欧美中文一区| 狂野欧美性猛交| 日韩黄色在线免费观看|