日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

memcpy 头文件_C|memcpy()和memmove()的比较及实现

發布時間:2025/3/19 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 memcpy 头文件_C|memcpy()和memmove()的比较及实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

memcpy()和memmove()函數的原型如下:

void * memcpy ( void * dst, const void * src, size_t num );

void * memmove ( void * dst, const void * src, size_t num );

1 相同點

1.1 通常函數的參數都有具體的類型,而這里的兩個函數的參數和返回值都是void,其實就是內存塊(字節序列)的復制或移動(函數名字的mem是memory的縮寫),有點泛型的味道,不像字符串拷貝函數,指定的是C風格字符數組類型。

1.2 兩者都位于頭文件中,當然除了字符串的復制,也可以復制其它數據類型,例如整體復制一個結構體(見后面的例子)。

1.3 函數不檢查源中是否有任何終止的空字符(terminating null character),它總是精確地復制num字節。

1.4 為了避免溢出(overflows),目標參數和源參數指向的空間至少應為num字節。

2 區別

memcpy():復制內存塊(Copy block of memory),直接復制(directly copy),因為是直接復制,所以不應重疊(overlap),對于重疊的內存塊,memmove是一種更安全的方法。

memmove():移動內存塊(Move block of memory),復制就像使用了中間緩沖區(intermediate buffer)一樣進行(其實質是比較兩塊內存的首地址,進行前向或后向復制(移動一下兩個指針)),允許目標和源重疊。

3 使用實例

3.1 memcpy():

#include #include struct { char name[40]; int age;} person, person_copy;int main (){ char myname[] = "Pierre de Fermat"; /* using memcpy to copy string: */ memcpy ( person.name, myname, strlen(myname)+1 ); person.age = 46; /* using memcpy to copy structure: */ memcpy ( &person_copy, &person, sizeof(person) ); printf ("person_copy: %s, %d ", person_copy.name, person_copy.age ); return 0;}// Output: person_copy: Pierre de Fermat, 46

3.2 memmove():

/* memmove example */#include #include int main (){ char str[] = "memmove can be very useful......"; memmove (str+20,str+15,11); puts (str); return 0;}// Output:memmove can be very very useful.

4 memmove()的實現

memmove()函數原型:void *memmove(void *dest, const void *src, size_t n)。

其功能是拷貝src所指向內存內容前n個字節到dest所指的地址上。

由于數據類型不確定,可以以字符為單位進行拷貝,這是因為字符可以擴展為任何一種數據類型,且每一種數據類型大小都是字符大小的倍數。

考慮到兩塊內存重疊的情況,需要考慮以下三點:

(1)當目標內存的首地址等于源內存的首地址時,不進行任何拷貝;

(2)當目標內存的首地址小于源內存的首地址時,正向拷貝,即從src拷貝到src + n;

(3)當目標內存的首地址大于源內存的首地址時,移動指針,反向拷貝,即從src+n反向拷貝到src;

#include#include#includevoid* memmove(void* dst, const void* src, size_t n){ char* d = (char*)dst; // 按字節為單位進行操作 const char *s = (const char*)src; if (ds) // 當目標地址在源地址后面時,移動指針,反向拷貝 { d = d+n-1; s = s+n-1; while (n--)*d-- = *s--; } return dst;}int main(){char src[100] = "Hello World!";memmove(src + 4, src, strlen(src) + 1);printf("%s",src); system("pause");return 0;}// 輸出:HellHello World!

-End-

總結

以上是生活随笔為你收集整理的memcpy 头文件_C|memcpy()和memmove()的比较及实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本艳妇 | 久久99精品国产麻豆婷婷洗澡 | 国产亚洲片 | 青青久久久 | 亚洲精品麻豆 | 亚洲天堂高清 | 欧美一级免费在线 | 色老太hd老太色hd | 好大好爽好舒服 | a天堂在线视频 | 91看片黄色 | 精品欧美国产 | 99久久婷婷国产综合精品电影 | 免费动漫av| 免费视频毛片 | 亚洲污网站 | 成人午夜免费福利 | 国产wwwwww | 四虎影视精品 | 东凛在线观看 | 久久电影一区二区 | 毛片av免费 | 91av视频在线播放 | 五十路在线视频 | 欧洲性生活片 | 男女啪啪免费网站 | 91看片网 | 日韩精品一区二区电影 | 日本猛少妇色xxxxx猛叫 | 男女啪啪av | 天堂аⅴ在线最新版在线 | 亚洲人和日本人hd | 欧美字幕| 久久久久久网址 | 大地资源二中文在线影视免费观看 | av亚洲在线 | 欧美一区二区三区黄色 | 国产无遮挡又黄又爽又色视频 | 欧美黄色一级片视频 | 一级女人毛片 | 欧美极品喷水 | 久久国产精品无码一级毛片 | 国产a视频 | 黄色一级片免费观看 | 免费成人深夜夜国外 | 深夜福利电影 | 久久久噜噜噜www成人 | 依依成人av| 国产人妖在线观看 | 日韩美av| 欧美男女动态图 | 色老头在线观看 | 啄木乌欧美一区二区三区 | 青草青草视频 | 狠狠干网站 | 亚洲av无码一区二区三区在线观看 | 日本后进式猛烈xx00动态图 | 亚洲精品国产精品乱码在线观看 | 少妇激情偷人三级 | 两性午夜视频 | 毛片久久久久 | 狠狠爱欧美 | 亚洲精品一卡 | 好男人在线观看 | 日韩在线一卡 | 999国产在线| 无码一区二区三区免费视频 | 日韩免费久久 | 精品综合 | 亚洲精品18 | 成人看 | 香蕉视频国产 | 亚洲精品综合在线观看 | 99久久久国产精品无码网爆 | 久久成人精品 | 久久亚 | 日韩在线视频二区 | 漂亮少妇高潮午夜精品 | 久久久九九九热 | 办公室大战高跟丝袜秘书经理ol | 免费观看黄一级视频 | 国产 欧美 日韩 | 天天天天天天天天干 | 99热久久这里只有精品 | 少妇高潮网站 | 亚洲图片激情小说 | 伦一理一级一a一片 | 九九影院最新理论片 | 午夜亚洲天堂 | 亚洲精品在线免费观看视频 | 嫩草天堂 | 日本亚洲一区二区三区 | 亚洲四区在线 | 欧美性视频一区二区三区 | aaa国产视频| 娇妻被老王脔到高潮失禁视频 | 久久国产精品亚洲 | 在线视频1卡二卡三卡 | 日韩一区二区三区免费视频 |