C語(yǔ)言?xún)?nèi)存操作函數(shù)詳解
頭文件:#include<memory.h>
1.memcpy
作用:內(nèi)存拷貝
函數(shù)原型:
void *memcpy( void *dest, const void *src, size_t count );
使用:
使用格式:memcpy(目的地,原,想操作內(nèi)存大小(單位字節(jié)))

把 "參數(shù)2" 起始的 "參數(shù)3" 個(gè)字節(jié) 內(nèi)容拷貝到 "參數(shù)1 '
memecpy函數(shù)類(lèi)似于strncpy。
例:
#include <memory.h>
#include <string.h>
#include <stdio.h>
int main()
{
int aa[] = { 1,2,3,4 };
int bb[10] = { 0 };
memcpy(bb, aa, 4 * sizeof(int));//把a(bǔ)a數(shù)組中4*4(每個(gè)int類(lèi)型是4字節(jié))內(nèi)容拷貝到bb數(shù)組
for (int i = 0; i < 10; i++) //打印bb數(shù)組全部數(shù)據(jù)
{
printf("%d ", bb[i]);
}
}
最后bb字符串中前4*4個(gè)字節(jié)的內(nèi)容被改為aa的內(nèi)容

注意 :memcpy不能拷貝重疊內(nèi)存。
#include <memory.h>
#include <string.h>
#include <stdio.h>
int main()
{
int aa[] = { 1,2,3,4,5,6,7,8,9,10 };
my_memcpy(aa + 2, aa, 24);
for (int i = 0; i < 10; i++)
{
printf("%d ", aa[i]);
}
}
輸出:

拷貝重疊內(nèi)存會(huì)出現(xiàn)這樣的問(wèn)題。
2.memmove
作用:內(nèi)存拷貝(可拷貝重疊內(nèi)存)
原型:
void *memmove( void *dest, const void *src, size_t count );
使用與memcpy一樣,只是memmove可以拷貝重疊內(nèi)存
#include <memory.h>
#include <string.h>
#include <stdio.h>
int main()
{
int aa[] = { 1,2,3,4,5,6,7,8,9,10 };
memmove(aa + 2, aa, 24);
for (int i = 0; i < 10; i++)
{
printf("%d ", aa[i]);
}
}
出:

同樣的代碼使用memmove就可以.
3.memcmp
作用:內(nèi)存比較
函數(shù)原型:
int memcmp( const void *buf1, const void *buf2, size_t count );
使用:
使用格式:memcmp(地址1,地址2,想要比較的內(nèi)存大小 單位bit)

逐字節(jié)比較內(nèi)存大小,
逐字節(jié)一對(duì)一對(duì)比較??!
返回值有三種情況:
<0 “參數(shù)1” 與 “參數(shù)2” 逐字節(jié)比較時(shí)遇到的第一對(duì)不同的內(nèi)存時(shí) “參數(shù)1” 中數(shù)據(jù) < “參數(shù)2”。
=0 “參數(shù)1” 與 “參數(shù)2” 中的前“ 參數(shù)” 三個(gè)字節(jié)的內(nèi)容完全相等。
>0 “參數(shù)1” 與 “參數(shù)2” 逐字節(jié)比較時(shí)遇到的第一對(duì)不同的內(nèi)存時(shí) “參數(shù)1” 中數(shù)據(jù) > “參數(shù)2”。
4.memset
作用:內(nèi)存設(shè)置
函數(shù)原型:
void *memset( void *dest, int c, size_t count );
使用:
使用格式:memset(地址,一個(gè)數(shù),設(shè)置多少字節(jié))
例:
#include <memory.h>
int main()
{
int a[] = {1,2,3,4,5};
memset(a, 1, 20);//把從a開(kāi)始的前二十個(gè)字節(jié)內(nèi)容改成1
}
結(jié)果:

總結(jié)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
- C語(yǔ)言深入講解動(dòng)態(tài)內(nèi)存分配函數(shù)的使用
- c語(yǔ)言詳解動(dòng)態(tài)內(nèi)存分配及常見(jiàn)錯(cuò)誤的解決
- C語(yǔ)言深入探索動(dòng)態(tài)內(nèi)存分配的使用
- C語(yǔ)言的動(dòng)態(tài)內(nèi)存分配及動(dòng)態(tài)內(nèi)存分配函數(shù)詳解
- C語(yǔ)言編程動(dòng)態(tài)內(nèi)存分配常見(jiàn)錯(cuò)誤全面分析
- C語(yǔ)言?xún)?nèi)存操作函數(shù)使用示例梳理講解
- C語(yǔ)言全部?jī)?nèi)存操作函數(shù)的實(shí)現(xiàn)詳細(xì)講解
- C語(yǔ)言動(dòng)態(tài)內(nèi)存分配和內(nèi)存操作函數(shù)使用詳解
相關(guān)文章
C 語(yǔ)言基礎(chǔ)教程(我的C之旅開(kāi)始了)[九]
C 語(yǔ)言基礎(chǔ)教程(我的C之旅開(kāi)始了)[九]...2007-02-02
C++編寫(xiě)實(shí)現(xiàn)圖書(shū)管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C++編寫(xiě)實(shí)現(xiàn)圖書(shū)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
實(shí)例解析C++設(shè)計(jì)模式編程中簡(jiǎn)單工廠模式的采用
這篇文章主要介紹了C++設(shè)計(jì)模式編程中簡(jiǎn)單工廠模式的采用實(shí)例,在簡(jiǎn)單工廠模式中程序往往利用封裝繼承來(lái)降低耦合度,需要的朋友可以參考下2016-03-03
利用C語(yǔ)言實(shí)現(xiàn)任務(wù)調(diào)度的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用純C語(yǔ)言實(shí)現(xiàn)任務(wù)調(diào)度(可用于STM32、C51等單片機(jī)),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-04-04
如何在C語(yǔ)言的宏中使用類(lèi)型關(guān)鍵字
如何在C語(yǔ)言的宏中使用類(lèi)型關(guān)鍵字呢?以下是實(shí)現(xiàn)方法。需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2013-10-10
C語(yǔ)言 指針變量作為函數(shù)參數(shù)詳解
本文主要介紹C語(yǔ)言 指針變量作為函數(shù)參數(shù),這里整理了相關(guān)資料和示例代碼,以便大家學(xué)習(xí)參考理解知識(shí)點(diǎn),有需要的小伙伴可以參考下2016-08-08
C/C++?Qt?給ListWidget組件增加右鍵菜單功能
本篇文章給大家介紹ListWidget組件增加一個(gè)右鍵菜單,當(dāng)用戶(hù)在ListWidget組件中的任意一個(gè)子項(xiàng)下右鍵,我們讓其彈出這個(gè)菜單,并根據(jù)選擇提供不同的功能,感興趣的朋友跟隨小編一起看看吧2021-11-11

