亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++中strcpy函數的實現

2020-01-26 14:50:31
字體:
來源:轉載
供稿:網友

我們先來看個例子

char * strcpy(char * strDest,const char * strSrc) {  if ((NULL==strDest) || (NULL==strSrc))     throw "Invalid argument(s)";  char * strDestCopy = strDest;  while ((*strDestCopy++ = *strSrc++) != '/0');  return strDest;}

突然想到之前做過的一個試題

題目:
    已知strcpy函數的原型是:
        char * strcpy(char * strDest,const char * strSrc);
    1.不調用庫函數,實現strcpy函數。
    2.解釋為什么要返回char *。

    解說:
    1.strcpy的實現代碼

    char * strcpy(char * strDest,const char * strSrc)    {        if ((strDest==NULL)||(strSrc==NULL)) //[1]            throw "Invalid argument(s)"; //[2]        char * strDestCopy=strDest; //[3]        while ((*strDest++=*strSrc++)!='/0'); //[4]        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的原始值使函數能夠支持鏈式表達式,增加了函數的“附加值”。同樣功能的函數,如果能合理地提高的可用性,自然就更加理想。
    鏈式表達式的形式如:
        int iLength=strlen(strcpy(strA,strB));
    又如:
        char * strA=strcpy(new char[10],strB);
    返回strSrc的原始值是錯誤的。其一,源字符串肯定是已知的,返回它沒有意義。其二,不能支持形如第二例的表達式。其三,為了保護源字符串,形參用const限定strSrc所指的內容,把const char *作為char *返回,類型不符,編譯報錯。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品一区二区在线| 久久久视频在线| 中文字幕v亚洲ⅴv天堂| 中文字幕日韩精品在线| 日韩av在线免费| 九九热r在线视频精品| 久久亚洲精品中文字幕冲田杏梨| 国产精品偷伦视频免费观看国产| 国产精品电影网| 国产免费观看久久黄| 98精品国产高清在线xxxx天堂| 日韩激情av在线播放| 亚洲国产精品成人va在线观看| 亚洲欧美日韩在线高清直播| 久久99国产精品久久久久久久久| 欧美成人黑人xx视频免费观看| 国产精品视频一| 久久偷看各类女兵18女厕嘘嘘| 国产精品入口夜色视频大尺度| 欧美在线观看www| 国产精品网址在线| 九色精品美女在线| 日韩一区二区三区xxxx| 国产精品入口尤物| 国语自产偷拍精品视频偷| 97久久精品在线| 国产精品一区二区三区毛片淫片| 精品国产一区二区三区四区在线观看| 国产福利精品在线| 亚洲综合视频1区| 欧美激情视频给我| 日韩中文在线不卡| 久久人人97超碰精品888| 亚洲精品久久久久中文字幕欢迎你| 日韩a**站在线观看| 日韩av色综合| 久久免费视频在线| 日韩电影视频免费| 欧美性xxxxx| 不卡av在线网站| 尤物yw午夜国产精品视频| 亚洲精品成人av| 国产精品aaaa| 久久综合免费视频| 国产视频亚洲视频| 精品久久中文字幕久久av| 中文字幕在线看视频国产欧美| 欧美色播在线播放| 久久精品久久精品亚洲人| 欧美性生交大片免费| 亚洲精品视频播放| 欧美国产日产韩国视频| 精品无码久久久久久国产| 国产成人激情视频| 欧美国产第一页| 午夜精品99久久免费| 欧美国产日本高清在线| 国产中文欧美精品| 欧美成人精品一区二区| 黑人狂躁日本妞一区二区三区| 在线视频欧美性高潮| 丝袜美腿精品国产二区| 久久国产天堂福利天堂| 97久久精品人人澡人人爽缅北| 精品国产一区二区三区久久久| 国产精品99久久久久久白浆小说| 亚洲精品成a人在线观看| 久久人人爽人人爽爽久久| 中文字幕久久久| 91日本视频在线| 中文字幕久久亚洲| 日本成熟性欧美| 久久久精品国产| 久久亚洲电影天堂| 国产男人精品视频| 久久久久久国产精品久久| 欧美成人黑人xx视频免费观看| 久久中文字幕在线视频| 国产欧洲精品视频| 欧美午夜精品久久久久久人妖| 91久久精品国产91性色| 成人综合网网址| 91国偷自产一区二区三区的观看方式| 亚洲综合在线做性| 精品高清一区二区三区| 精品国产欧美成人夜夜嗨| 欧美精品免费看| 成人中心免费视频| 亚洲a成v人在线观看| 国产精品白丝jk喷水视频一区| 国产自产女人91一区在线观看| 亚洲精品一区中文字幕乱码| 91人人爽人人爽人人精88v| 精品久久久久久亚洲精品| 国产精自产拍久久久久久| 91久久久久久国产精品| 日韩福利在线播放| 国产精品爽爽ⅴa在线观看| 久久天天躁狠狠躁老女人| 国产成人高清激情视频在线观看| 在线午夜精品自拍| 欧美一区二区三区图| 成人免费看吃奶视频网站| 在线电影av不卡网址| 久久久国产视频| 91精品国产色综合| 亚洲国产成人在线播放| 一区二区福利视频| 欧美精品第一页在线播放| 久久躁日日躁aaaaxxxx| 欧美激情在线观看| 在线播放日韩欧美| 国产午夜精品全部视频播放| 欧美极品少妇与黑人| 欧美一级片在线播放| 欧美成人精品一区二区| 美日韩精品视频免费看| 亚洲综合第一页| 日韩精品视频在线免费观看| 亚洲精品乱码久久久久久金桔影视| 国产欧美日韩免费| 欧美成人精品一区二区| 久热精品视频在线观看一区| 国模精品系列视频| 欧美在线中文字幕| 国产精品视频26uuu| 欧美日韩中国免费专区在线看| 视频在线一区二区| 日韩有码在线电影| 久久精品夜夜夜夜夜久久| 欧美日韩福利电影| 欧美国产乱视频| 日韩欧美精品网站| 亚洲男人天堂九九视频| 亚洲欧美日韩国产中文专区| 欧美性69xxxx肥| 日本高清视频精品| 国产欧美日韩91| 日韩精品视频中文在线观看| 欧美成人在线网站| 国产精品高清在线| 奇米影视亚洲狠狠色| 97久久精品视频| 国产精品久久91| 国产精品久久久久91| 欧美极品美女电影一区| 久久久精品久久| 中文字幕亚洲综合久久| 欧美夫妻性视频| 日av在线播放中文不卡| 亚洲精品电影在线观看| 国产在线播放91| 欧美黄色片在线观看| 综合av色偷偷网| 琪琪亚洲精品午夜在线| 久久久999精品免费| 国产精品入口尤物| 69精品小视频| 欧美午夜美女看片| 韩剧1988免费观看全集| 日韩69视频在线观看| 中文字幕不卡在线视频极品| 亚洲精品国产拍免费91在线| 久久久久久久久国产精品|