国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C > 正文

深入理解memmove()與memcpy()的區別以及實現方法

2020-02-24 14:27:25
字體:
來源:轉載
供稿:網友

memcpy和memmove的區別在實現方面,memcpy是一個直接拷貝,如果兩個指針重疊,結果是未知的,下文是武林技術頻道小編和大家分享的深入理解memmove()與memcpy()的區別以及實現方法,一起來了解一下吧!


代碼如下所示:

?

?

?


// MemMove.cpp : 定義控制臺應用程序的入口點。
//
#include "stdafx.h"
#include <iostream>
using namespace std;

?

?

?


void* memmove(void* dest, const void* src, size_t n)
{
?if (n <= 0)
?{
? cout << "Invalid count number." << endl;
?}
?if (dest == NULL || src == NULL)
?{
? cout << "The dest or src address is null." << endl;
?}
?if (dest == src)
?{
? cout << "The dest equals src." << endl;
?}
?if ((char*)dest <= (char*)src || (char*)dest >= (char*)src + n)
?{//對應圖中2,3,4三種情況,賦值過程中,src中未使用的不會被覆蓋
? char* de = (char*)dest;
? const char* sr = (const char*)src;
? while (n--)
? {
?? *de++ = *sr++;
? }
?}
?else
?{//對應圖中的第一種情況
? char* de = (char*)dest + n -1;
? const char* sr = (const char*)src + n - 1;
? while (n--)
? {
?? *de-- = *sr--;
? }
?}
?return dest;
}

?

?

?


void* memmcpy(void* dest, const void* src, size_t n)?
{?
? if (n <= 0)?
{?
? cout << "Invalid count number." << endl;?
}?
?if (dest == NULL || src == NULL)?
?{?
???? cout << "The dest or src address is null." << endl;?
?}?
?if (dest == src)?
?{?
?? cout << "The dest equals src." << endl;?
?}?
?char* de = (char*)dest;?
?const char* sr = (const char*)src;?
?while (n--)?
?{?
?? *de++ = *sr++;?
?}?
? return dest;?
}?

?

?

?


int _tmain(int argc, _TCHAR* argv[])
{
?char* p = "hello,world";?
?char dest[12] = {0};
?char *q = (char*)memmove(dest,p,5);
?cout << dest << endl;???
?cout << q << endl;?
?return 0;??
}

深入理解memmove()與memcpy()的區別以及實現方法就為各位朋友們介紹到這里了。大家可以在上文看到非常多優秀的文章,大家可以從武林技術頻道獲取全面的內容。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 贺州市| 凤城市| 锦屏县| 福安市| 通江县| 汾西县| 巴东县| 宁河县| 南丰县| 石家庄市| 灌云县| 新建县| 芜湖县| 赫章县| 四子王旗| 中山市| 若羌县| 罗山县| 梧州市| 弥勒县| 外汇| 昌吉市| 鹤山市| 定边县| 得荣县| 湛江市| 龙海市| 德阳市| 水城县| 宜宾市| 策勒县| 北票市| 绥芬河市| 英德市| 和龙市| 旬阳县| 永修县| 临潭县| 岫岩| 南京市| 惠来县|