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

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

    • 分享

      strcpy strncpy memcpy

       fym0121 2011-02-11
      這些函數(shù)的區(qū)別在于 實(shí)現(xiàn)功能 以及 操作對象 不同。

      strcpy 函數(shù)操作的對象是 字符串,完成 從 源字符串 到 目的字符串 的 拷貝 功能。

      snprintf 函數(shù)操作的對象 不限于字符串:雖然目的對象是字符串,但是源對象可以是字符串、也可以是任意基本類型的數(shù)據(jù)。這個(gè)函數(shù)主要用來實(shí)現(xiàn) (字符串或基本數(shù)據(jù)類型)向 字符串 的轉(zhuǎn)換 功能。如果源對象是字符串,并且指定 %s 格式符,也可實(shí)現(xiàn)字符串拷貝功能。

      memcpy 函數(shù)顧名思義就是 內(nèi)存拷貝,實(shí)現(xiàn) 將一個(gè) 內(nèi)存塊 的內(nèi)容復(fù)制到另一個(gè) 內(nèi)存塊 這一功能。內(nèi)存塊由其首地址以及長度確定。程序中出現(xiàn)的實(shí)體對象,不論是什么類型,其最終表現(xiàn)就是在內(nèi)存中占據(jù)一席之地(一個(gè)內(nèi)存區(qū)間或塊)。因此,memcpy 的操作對象不局限于某一類數(shù)據(jù)類型,或者說可 適用于任意數(shù)據(jù)類型,只要能給出對象的起始地址和內(nèi)存長度信息、并且對象具有可操作性即可。鑒于 memcpy 函數(shù)等長拷貝的特點(diǎn)以及數(shù)據(jù)類型代表的物理意義,memcpy 函數(shù)通常限于同種類型數(shù)據(jù)或?qū)ο笾g的拷貝,其中當(dāng)然也包括字符串拷貝以及基本數(shù)據(jù)類型的拷貝。

      對于字符串拷貝來說,用上述三個(gè)函數(shù)都可以實(shí)現(xiàn),但是其實(shí)現(xiàn)的效率和使用的方便程度不同:
      • strcpy 無疑是最合適的選擇:效率高且調(diào)用方便。
      • snprintf 要額外指定格式符并且進(jìn)行格式轉(zhuǎn)化,麻煩且效率不高。
      • memcpy 雖然高效,但是需要額外提供拷貝的內(nèi)存長度這一參數(shù),易錯(cuò)且使用不便;并且如果長度指定過大的話(最優(yōu)長度是源字符串長度 + 1),還會帶來性能的下降。其實(shí) strcpy 函數(shù)一般是在內(nèi)部調(diào)用 memcpy 函數(shù)或者用匯編直接實(shí)現(xiàn)的,以達(dá)到高效的目的。因此,使用 memcpy 和 strcpy 拷貝字符串在性能上應(yīng)該沒有什么大的差別。

      對于非字符串類型的數(shù)據(jù)的復(fù)制來說,strcpy 和 snprintf 一般就無能為力了,可是對 memcpy 卻沒有什么影響。但是,對于基本數(shù)據(jù)類型來說,盡管可以用 memcpy 進(jìn)行拷貝,由于有賦值運(yùn)算符可以方便且高效地進(jìn)行同種或兼容類型的數(shù)據(jù)之間的拷貝,所以這種情況下 memcpy 幾乎不被使用。memcpy 的長處是用來實(shí)現(xiàn)(通常是內(nèi)部實(shí)現(xiàn)居多)對結(jié)構(gòu)或者數(shù)組的拷貝,其目的是或者高效,或者使用方便,甚或兩者兼有

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

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多