成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

兩道出現頻率超高的C++筆試題

開發 后端
本文旨在從技術上分析C/C++程序員筆試題題的內涵。文中所列舉的兩道筆試題頻繁出現在各種C++考試場合,本文即對這兩道筆試題進行深入分析,希望對你能有所幫助。

  兩道出現頻率超高的C++筆試題

  已知strcpy函數的原型是:

  1. char * strcpy(char * strDest,const char * strSrc); 

  1.不調用庫函數,實現strcpy函數。

  2.解釋為什么要返回char *。

  解說:

  1.strcpy的實現代碼

  1. char * strcpy(char * strDest,const char * strSrc)  
  2. {  
  3. if ((strDest==NULL)||(strSrc==NULL)) //[1]  
  4. throw "Invalid argument(s)"//[2]  
  5. char * strDestCopy=strDest; //[3]  
  6. while ((*strDest++=*strSrc++)!='\0'); //[4]  
  7. return strDestCopy;  

  錯誤的做法:

  [1]

  (A)不檢查指針的有效性,說明答題者不注重代碼的健壯性。

  (B)檢查指針的有效性時使用((!strDest)||(!strSrc))或(!(strDest&&strSrc)),說明答題者對C語言中類型的隱式轉換沒有深刻認識。在本例中char *轉換為bool即是類型隱式轉換,這種功能雖然靈活,但更多的是導致出錯概率增大和維護成本升高。所以C++專門增加了bool、true、false三個關鍵字以提供更安全的條件表達式。

  (C)檢查指針的有效性時使用((strDest==0)||(strSrc==0)),說明答題者不知道使用常量的好處。直接使用字面常量(如本例中的0)會減少程序的可維護性。0雖然簡單,但程序中可能出現很多處對指針的檢查,萬一出現筆誤,編譯器不能發現,生成的程序內含邏輯錯誤,很難排除。而使用NULL代替0,如果出現拼寫錯誤,編譯器就會檢查出來。

  [2]

  (A)return new string("Invalid argument(s)");,說明答題者根本不知道返回值的用途,并且他對內存泄漏也沒有警惕心。從函數中返回函數體內分配的內存是十分危險的做法,他把釋放內存的義務拋給不知情的調用者,絕大多數情況下,調用者不會釋放內存,這導致內存泄漏。

  (B)return 0;,說明答題者沒有掌握異常機制。調用者有可能忘記檢查返回值,調用者還可能無法檢查返回值(見后面的鏈式表達式)。妄想讓返回值肩負返回正確值和異常值的雙重功能,其結果往往是兩種功能都失效。應該以拋出異常來代替返回值,這樣可以減輕調用者的負擔、使錯誤不會被忽略、增強程序的可維護性。

  [3]

  (A)忘記保存原始的strDest值,說明答題者邏輯思維不嚴密。

  [4]

  (A)循環寫成while (*strDest++=*strSrc++);,同[1](B)。

  (B)循環寫成while (*strSrc!='\0') *strDest++=*strSrc++;,說明答題者對邊界條件的檢查不力。循環體結束后,strDest字符串的末尾沒有正確地加上'\0'。

  2.返回strDest的原始值使函數能夠支持鏈式表達式,增加了函數的“附加值”。同樣功能的函數,如果能合理地提高的可用性,自然就更加理想。

  鏈式表達式的形式如:

  1. int iLength=strlen(strcpy(strA,strB)); 

  又如:

  1. char * strA=strcpy(new char[10],strB); 

  返回strSrc的原始值是錯誤的。其一,源字符串肯定是已知的,返回它沒有意義。其二,不能支持形如第二例的表達式。其三,為了保護源字符串,形參用const限定strSrc所指的內容,把const char *作為char *返回,類型不符,編譯報錯。

【編輯推薦】

  1. C++中的指針用法總結
  2. 如何成為一名C++程序員
  3. c++編程常用工具
  4. 給C++初學者的50個忠告
  5. c++最基礎的20條規則
責任編輯:韓亞珊 來源: 中國IT實驗室
相關推薦

2009-10-10 15:36:00

CCNA考試題目CCNA

2015-04-28 09:36:20

.NET頻率高筆試題

2021-10-27 11:00:30

C++語言面試

2011-03-30 09:26:20

c++程序員

2009-08-10 18:16:20

C#面試題

2011-08-11 17:39:25

Objective-C筆試題

2022-09-21 22:19:16

CSS面試題

2021-11-01 23:36:24

連續區間面試

2010-01-28 15:45:35

C++老手

2025-05-23 08:15:00

C++constexpr字面類型

2011-03-26 22:16:31

等考試題C++筆試試題

2011-04-11 16:42:25

C++等級考試

2009-08-20 15:54:48

從C#到C++

2024-04-28 09:26:40

RustRTTI二進制

2025-05-20 10:00:00

C++命名空間別名代碼

2015-04-07 14:05:13

前端阿里在線筆試題

2014-01-02 15:08:35

手游渠道IP

2009-06-15 17:18:25

Java筆試題

2010-01-21 09:34:57

C++語法

2010-01-27 16:05:06

C++堆棧
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲成人免费视频在线观看 | 成人三区 | 亚欧精品一区 | 久久亚洲视频网 | 99精品网| 天堂免费 | 在线视频第一页 | 国产精品毛片久久久久久久 | 日韩成人av在线播放 | 中文成人在线 | 久久久久久黄 | 亚洲最大福利网 | 91看片在线 | 精彩视频一区二区三区 | 一区二区三区国产好 | 依人成人 | 在线观看第一区 | 久久在线| 蜜月va乱码一区二区三区 | 久久精品综合网 | 亚洲在线免费 | aa级毛片毛片免费观看久 | 国产精品视频一区二区三区不卡 | 久久一区| 欧美综合国产精品久久丁香 | 第一福利社区1024 | 夜夜摸天天操 | 成人网在线| 欧美一级在线免费观看 | 国产精品精品视频一区二区三区 | 日韩精品a在线观看图片 | 欧美涩涩网 | www.色综合| 亚洲大片在线观看 | 一区二区三区影院 | 成人欧美一区二区三区黑人孕妇 | 一级毛片视频在线 | av黄色在线 | gav成人免费播放视频 | 国产乱码精品一区二区三区中文 | 国产区在线视频 |