
? ?
??博客昵稱:博客小夢
??最喜歡的座右銘:全神貫注的上吧!?。?br> ??作者簡介:一名熱愛C/C++,算法等技術(shù)、喜愛運動、熱愛K歌、敢于追夢的小博主!
??博主小留言:哈嘍!??各位CSDN的uu們,我是你的博客好友小夢,希望我的文章可以給您帶來一定的幫助,話不多說,文章推上!歡迎大家在評論區(qū)嘮嗑指正,覺得好的話別忘了一鍵三連哦!??
前言??
? ? 哈嘍各位友友們??,我今天又學(xué)到了很多有趣的知識,現(xiàn)在迫不及待的想和大家分享一下!??我僅已此文,和大家分享你是真的“C”——各種實用memory類庫函數(shù)的詳細實現(xiàn)和使用。都是精華內(nèi)容,可不要錯過喲?。?!??????
一、memcpy庫函數(shù)的模擬實現(xiàn) ??
memcpy大概樣子: ??
- 我們可以看到,memcpy庫函數(shù)的實現(xiàn),用到了空類型的指針,這個設(shè)計是非常巧妙的。這個 void 就像是一個垃圾箱,你可以把任意類型的數(shù)據(jù)往里面扔,他都可以接受。
memcpy庫函數(shù)模擬實現(xiàn)源碼: ??
void* my_memcpy(void* dest, const void* src, size_t num)
{
assert(dest && src);
void* ret = dest;
while (num--)
{
*(char*)dest = *(char*)src;
dest = (char*)dest + 1;
src = (char*)src + 1;
}
return ret;
}
int main()
{
int arr1[10] = { 1,2,3,4,5,6 };
int arr2[10] = { 0 };
my_memcpy(arr2,arr1, 20);
return 0;
}
程序運行結(jié)果展示:
二、memmove庫函數(shù)的模擬實現(xiàn) ??
memmove大概長這樣的:
看了之后還是有點模糊,別急。下面畫圖輔助大家理解一波:
memmove庫函數(shù)模擬實現(xiàn)源碼: ??
void* my_memmove(void* dest, const void* src, size_t num)
{
assert(dest && src);
void* ret = dest;
if (src < dest)
{
while (num--)
{
*((char*)dest + num) = *((char*)src + num);
}
}
else
{
while (num--)
{
*(char*)dest = *(char*)src;
dest = (char*)dest + 1;
src = (char*)src + 1;
}
}
return ret;
}
int main()
{
int arr1[10] = { 1,2,3,4,5,6,7,8,9,10};
//
my_memmove(arr1 + 2,arr1, 20);
return 0;
}
程序運行結(jié)果展示:
三、memcmp庫函數(shù)的使用
memcmp庫函數(shù),是用來比較內(nèi)存內(nèi)存中指定范圍內(nèi)的內(nèi)存數(shù)據(jù)大小的庫函數(shù)。
memcmp大概長這個樣子:
memcmp 的返回值設(shè)置和strcmp的返回值設(shè)置是一樣的。
memcmp 的使用示范:
四、memset 庫函數(shù)的使用
memset 叫做內(nèi)存數(shù)據(jù)設(shè)置函數(shù),你可以使用它設(shè)置內(nèi)存中的數(shù)據(jù)。
memset 大概長這樣子:
memset函數(shù)的使用示范:
文章來源:http://www.zghlxwxcb.cn/news/detail-786008.html
總結(jié)撒花??
? ?本篇文章旨在分享實用memory類庫函數(shù)的詳細實現(xiàn)和使用。希望大家通過閱讀此文有所收獲!??如果我寫的有什么不好之處,請在文章下方給出你寶貴的意見??。如果覺得我寫的好的話請點個贊贊和關(guān)注哦~??????文章來源地址http://www.zghlxwxcb.cn/news/detail-786008.html
到了這里,關(guān)于你是真的“C”——實用memory類庫函數(shù)的詳細實現(xiàn)和使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!