欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

深入理解strcpy與memcpy的區(qū)別

 更新時(shí)間:2013年05月28日 15:52:23   作者:  
本篇文章是對(duì)strcpy與memcpy的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
strcpy與memcpy都是標(biāo)準(zhǔn)C庫(kù)函數(shù),它們有下面的特點(diǎn)。
strcpy提供了字符串的復(fù)制。即strcpy只用于字符串復(fù)制,并且它不僅復(fù)制字符串內(nèi)容之外,還會(huì)復(fù)制字符串的結(jié)束符。
已知strcpy函數(shù)的原型是:char* strcpy(char* dest, const char* src);
memcpy提供了一般內(nèi)存的復(fù)制。即memcpy對(duì)于需要復(fù)制的內(nèi)容沒(méi)有限制,因此用途更廣。
void *memcpy( void *dest, const void *src, size_t count );
復(fù)制代碼 代碼如下:

char * strcpy(char * dest, const char * src) // 實(shí)現(xiàn)src到dest的復(fù)制
{
  if ((src == NULL) || (dest == NULL)) //判斷參數(shù)src和dest的有效性
  {

      return NULL;
  }
  char *strdest = dest;        //保存目標(biāo)字符串的首地址
  while ((*strDest++ = *strSrc++)!='\0'); //把src字符串的內(nèi)容復(fù)制到dest下
  return strdest;
}
void *memcpy(void *memTo, const void *memFrom, size_t size)
{
  if((memTo == NULL) || (memFrom == NULL)) //memTo和memFrom必須有效
         return NULL;
  char *tempFrom = (char *)memFrom;             //保存memFrom首地址
  char *tempTo = (char *)memTo;                  //保存memTo首地址      
  while(size -- > 0)                //循環(huán)size次,復(fù)制memFrom的值到memTo中
         *tempTo++ = *tempFrom++ ;  
  return memTo;
}

strcpy與memcpy主要有以下3方面的區(qū)別。
1、復(fù)制的內(nèi)容不同。strcpy只能復(fù)制字符串,而memcpy可以復(fù)制任意內(nèi)容,例如字符數(shù)組、整型、結(jié)構(gòu)體、類等。
2、復(fù)制的方法不同。strcpy不需要指定長(zhǎng)度,它遇到被復(fù)制字符的串結(jié)束符"\0"才結(jié)束,所以容易溢出。memcpy則是根據(jù)其第3個(gè)參數(shù)決定復(fù)制的長(zhǎng)度。
3、用途不同。通常在復(fù)制字符串時(shí)用strcpy,而需要復(fù)制其他類型數(shù)據(jù)時(shí)則一般用memcpy

相關(guān)文章

  • C語(yǔ)言 文件操作解析詳解及實(shí)例代碼

    C語(yǔ)言 文件操作解析詳解及實(shí)例代碼

    這篇文章主要介紹了C語(yǔ)言 文件操作解析詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2016-11-11
  • 解析C++多文件編程問(wèn)題

    解析C++多文件編程問(wèn)題

    在某些場(chǎng)景中,考慮到編譯效率和可移植性,#pragma once 和 #ifndef 經(jīng)常被結(jié)合使用來(lái)避免頭文件被 重復(fù)引入,這里介紹用 _Pragma 操作符避免頭文件重復(fù)引入的問(wèn)題,感興趣的朋友跟隨小編一起看看吧
    2021-10-10
  • C++實(shí)現(xiàn)掃雷小游戲(控制臺(tái)版)

    C++實(shí)現(xiàn)掃雷小游戲(控制臺(tái)版)

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)控制臺(tái)版的掃雷小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • 初識(shí)C++?Vector模板與實(shí)例化原理

    初識(shí)C++?Vector模板與實(shí)例化原理

    這篇文章主要為大家介紹了初識(shí)C++?Vector模板與實(shí)例化原理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • C++的命名空間詳解

    C++的命名空間詳解

    這篇文章主要介紹了C++編程中的命名空間基本知識(shí)講解,包括對(duì)C++中內(nèi)聯(lián)命名空間新特性的介紹,需要的朋友可以參考下
    2021-09-09
  • C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)順序表的進(jìn)階講解

    C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)順序表的進(jìn)階講解

    程序中經(jīng)常需要將一組數(shù)據(jù)元素作為整體管理和使用,需要?jiǎng)?chuàng)建這種元素組,用變量記錄它們,傳進(jìn)傳出函數(shù)等。一組數(shù)據(jù)中包含的元素個(gè)數(shù)可能發(fā)生變化,順序表則是將元素順序地存放在一塊連續(xù)的存儲(chǔ)區(qū)里,元素間的順序關(guān)系由它們的存儲(chǔ)順序自然表示
    2022-04-04
  • c++結(jié)構(gòu)體排序方式(1條件,多條件)

    c++結(jié)構(gòu)體排序方式(1條件,多條件)

    這篇文章主要介紹了c++結(jié)構(gòu)體排序方式(1條件,多條件),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 如何實(shí)現(xiàn)在C++中調(diào)用C函數(shù)

    如何實(shí)現(xiàn)在C++中調(diào)用C函數(shù)

    這篇文章主要介紹了如何實(shí)現(xiàn)在C++中調(diào)用C函數(shù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • C語(yǔ)言字符函數(shù)中的isalnum()和iscntrl()你都知道嗎

    C語(yǔ)言字符函數(shù)中的isalnum()和iscntrl()你都知道嗎

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言字符函數(shù)中的isalnum()和iscntrl(),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • C++實(shí)現(xiàn)圖像壓縮的示例代碼

    C++實(shí)現(xiàn)圖像壓縮的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何使用C++實(shí)現(xiàn)圖像壓縮的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-12-12

最新評(píng)論