memmove使?和模擬實現

一:memmove的使?

這是memmove在庫里的定義,具體可在cplusplus.com查看

void * memmove ( void * destination, const void * source, size_t num )

? 和memcpy的差別就是memmove函數處理的源內存塊和?標內存塊是可以重疊的。

? 如果源空間和?標空間出現重疊,就得使?memmove函數處理。

代碼:

include <stdio.h> 
#include <string.h>
int main(){   int arr1[] = { 1,2,3,4,5,6,7,8,9,10 };   memmove(arr1+2, arr1, 20);   int i = 0;    for (i = 0; i < 10; i++)  {        printf("%d ", arr1[i]);  }return 0; }

輸出的結果:1 2 1 2 3 4 5 8 9 1

二:memmove的模擬實現

代碼1:

void*my_memmove(void* dst, const void* src, size_t count)
{void* ret = dst;if (dst <= src || (char*)dst >= ((char*)src + count)) {while (count--) {*(char*)dst = *(char*)src;dst = (char*)dst + 1;src = (char*)src + 1;}}else {dst = (char*)dst + count - 1;src = (char*)src + count - 1;while (count--) {*(char*)dst = *(char*)src;dst = (char*)dst - 1;src = (char*)src - 1;}}return(ret);
}
int main()
{int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };my_memmove(arr+2, arr , 20);for (int i = 0; i < 10; i++){printf("%d  ", arr[i]);//1 2 1 2 3 4 5 8 9 10,結果}return 0;
}

代碼2:

函數也可以這樣寫,結果一樣

void* my_memmove(void* arr1, const void* arr2, size_t num)
{if (arr1 < arr2){while (num--){*(char*)arr1 = *(char*)arr2;arr1 = (char*)arr1 + 1;arr2 = (char*)arr2 + 1;}}if (arr1 > arr2){//	arr1 = (char*)arr1 + num - 1;//	arr2 = (char*)arr2 + num - 1;while (num--){*((char*)arr1+num-1)=*((char*)arr2+num-1);//法1 //取消注釋就是另一種方法//	*(char*)arr1 = *(char*)arr2;//	arr1 = (char*)arr1 - 1;//	arr2 = (char*)arr2 - 1;}}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/14939.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/14939.shtml
英文地址,請注明出處:http://en.pswp.cn/web/14939.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

你以為的私域是真正的私域嘛??你的私域流量真的屬于你嘛?

大家好 我是一個軟件開發公司的產品經理 專注私域電商行業7年有余 您的私域流量是真正的屬于你自己嘛&#xff1f; 私域的定義 私域的界定&#xff1a;一個互聯網私有數據&#xff08;資產&#xff09;積蓄的載體。這個載體的數據權益私有&#xff0c;且具備用戶規則制定權…

Mysql 備份恢復 mysqldump與xtrabackup備份

1.1 備份的原因 備份是數據安全的最后一道防線&#xff0c;對于任何數據丟失的場景&#xff0c;備份雖然不一定能恢復百分之百的數據 (取決于備份周期)&#xff0c;但至少能將損失降到最低。衡量備份恢復有兩個重要的指標&#xff1a;恢復點目標(RPO) 和恢復時間目標(RTO)&…

數據庫常用命令(1)

DML 1.添加數據&#xff08;insert into&#xff09; insert into 表名 values (值1&#xff0c;值2....); 表示成功運行&#xff1a; 2.修改數據&#xff08;update&#xff09; update 表名 set 字段名1值1&#xff0c;字段名2值2.....【where條件】 3.刪除數據&#xff0…

元年科技數據智能研發部負責人張亞東受邀為第十三屆中國PMO大會演講嘉賓

全國PMO專業人士年度盛會 北京元年科技股份有限公司數據智能研發部負責人張亞東先生受邀為PMO評論主辦的2024第十三屆中國PMO大會演講嘉賓&#xff0c;演講議題為“大模型時代&#xff0c;AI創新型工具提升項目管理效率”。大會將于6月29-30日在北京舉辦&#xff0c;敬請關注&a…

jmeter之HTTP請求和查看結果樹

一、HTTP請求作用&#xff1a; 可以發送post或get請求等請求可以向服務器發送參數或消息體數據可以進行文件上傳 HTTP請求&#xff1a;是線程組內的取樣器最常用的的一個原件 二、查看界面 添加一個HTTP請求&#xff1a;選擇線程組–添加–取樣器–HTTP請求 默認界面 名稱和…

ThreadLocal為什么會導致內存泄漏?

問題引出&#xff1a; ThreadLocal是為了解決什么問題而產生的&#xff1f; ThreadLocal發生內存泄漏的根本原因是什么&#xff1f; 如何避免內存泄漏的發生&#xff1f;定義 為了解決多個線程同時操作程序中的同一個變量而導致的數據不一致性的問題。 ??假設現在有兩個線程A…

如何獲取一個城市或者一個區域的玫瑰風向圖?

玫瑰風向圖是一種直觀展示風向和風速的圖形工具&#xff0c;它在氣象學、城市規劃、農業等領域都有廣泛的應用。那么&#xff0c;如何獲取某個城市或某個區域的玫瑰風向圖呢&#xff1f; 首先&#xff0c;我們可以借助互聯網資源獲取玫瑰風向圖。現代網絡技術發達&#xff0c;…

前端 防抖和節流

在前端開發中&#xff0c;防抖&#xff08;Debounce&#xff09;和節流&#xff08;Throttle&#xff09;是兩種常用的性能優化技術&#xff0c;尤其在處理頻繁觸發的事件時顯得尤為重要。無論是在用戶輸入、窗口調整大小&#xff0c;還是滾動事件中&#xff0c;這兩種技術都可…

3D 生成重建011-LucidDreamer 優化SDS過平滑結果的一種探索

3D 生成重建011-LucidDreamer 優化SDS過平滑結果的一種探索 文章目錄 0論文工作1論文方法2 效果 0論文工作 文本到3D生成的最新進展標志著生成模型的一個重要里程碑&#xff0c;為在各種現實場景中創建富有想象力的3D資產打開了新的可能性。雖然最近在文本到3D生成方面的進展…

自建公式,VBA在Excel中解一元一次方程

自建公式,VBA在Excel中解一元一次方程 文章目錄 前言一、運行效果圖二、操作思路三、代碼1.去除方程中未知數,將未知數轉為“*0”2.計算方程中常數3.計算方程中未知數的系數一,先將未知數替換成“*1”4.計算方程中未知數的系數二5.計算方程得數前言 小學必考內容:一元一次…

掌握Python基本語法的終極指南【基本語法部分】

一、基本語法部分 1.簡單數據類型 1.1字符串類型及操作 字符串訪問&#xff1a; 1.索引訪問 mystr"Hello world" #索引訪問 print(mystr[0]) #H print(mystr[-1]) #d print(mystr[-7]) #o print(mystr[6]) #w 2.切片訪問 [頭下標&#xff1a;尾下標] &#x…

齊護K210系列教程(三十二)_在線模型訓練

在線模型訓練 概念理解準備工作1 采集圖像1.1 圖像要求1.2 使用K210采集圖片 2 標注圖像3 打包數據集4 上傳數據4.1創建項目4.1.1圖像分類創建項目4.1.2圖像檢測創建項目 4.2上傳數據4.2.1分類檢測上傳數據4.2.2圖像檢測上傳數據 5 訓練模型6 部署模型以及測試7 測試效果7.1圖像…

leetcode 152. 乘積最大子數組

. - 力扣&#xff08;LeetCode&#xff09; 給你一個整數數組 nums &#xff0c;請你找出數組中乘積最大的非空連續 子數組 &#xff08;該子數組中至少包含一個數字&#xff09;&#xff0c;并返回該子數組所對應的乘積。 測試用例的答案是一個 32-位 整數。 示例 1: 輸入…

MongoDB關系處理:優化數據管理、提升性能的最佳實踐

MongoDB 是一種 NoSQL 數據庫&#xff0c;它使用文檔模型來存儲數據&#xff0c;這與關系型數據庫&#xff08;RDBMS&#xff09;有顯著不同。本文將詳細介紹 MongoDB 中的關系處理&#xff0c;包括基本語法、命令、示例、應用場景、注意事項和總結。 基本語法 文檔和集合 M…

30.靜態代碼分析工具clang-tidy

文章目錄 基本介紹安裝clang-tidy使用clang-tidy配置文件和格式文件配置文件格式文件使用配置文件和格式化文件 在代碼中設置排除clang-tidy檢測reference 歡迎訪問個人網絡日志&#x1f339;&#x1f339;知行空間&#x1f339;&#x1f339; 基本介紹 clang-tidy 是一個基于…

JDBC總結

目錄 JDBC(java database connection) JDBC連接數據庫步驟: 1. 在項目中添加jar文件,如圖所示 2.加載驅動類 向數據庫中插入數據代碼示例: 第一種: 第二種: 查詢操作 : 第一種: 第二種: JDBC(java database connection) java數據庫連接.api(應用程序編程接口) ,可…

Java中的垃圾回收機制

在Java編程語言中&#xff0c;垃圾回收&#xff08;Garbage Collection, GC&#xff09;機制是內存管理的一個核心部分。它的主要目標是自動釋放那些不再被程序使用的對象所占用的內存空間&#xff0c;從而防止內存泄漏&#xff0c;并確保程序的穩定運行。下面&#xff0c;我將…

一文講清!傳統企業的進銷存管理難題該怎么解決?

有沒有開源的進銷存軟件啊&#xff1f; 確實&#xff0c;市面上存在不少開源的進銷存軟件。但客觀地講&#xff0c;開源軟件往往面臨著安全隱患&#xff0c;因為代碼公開&#xff0c;容易成為黑客攻擊的目標。此外&#xff0c;開源軟件的功能模塊通常較為固定&#xff0c;難以…

初出茅廬的小李博客之MQTT.fx客戶端接入EMQX Platform

EMQX Platform 概覽 EMQX Platform 是 EMQ 推出的一款面向物聯網領域的 MQTT 消息中間件產品。作為全球首個 MQTT 5.0 消息云服務&#xff0c;EMQX Platform 提供了一站式運維代管、獨有隔離環境的 MQTT 消息服務。在萬物互聯的時代&#xff0c;EMQX Platform 可以幫助您快速構…

python數據類型之列表

目錄 1.創建列表 2.列表基礎操作 常用操作 對列表元素順序隨機打亂 列表下標和切片 字符串分割為列表 列表位移 列表切片替換 3.列表內置方法 4.列表排序 簡單排序 使用key參數按指定規則排序 二維列表排序 自定義排序規則函數 5.列表排序算法 選擇排序 柱狀圖…