C语言中内存函数有哪些
发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,这篇文章主要介绍了C语言中内存函数有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。内存函数1.复制 memcpy,memmovev
千家信息网最后更新 2025年11月09日C语言中内存函数有哪些
这篇文章主要介绍了C语言中内存函数有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
内存函数
1.复制 memcpy,memmove
void * memcpy ( void * destination, const void * source, size_t num );
dest复制src中num个字节的数据。
模拟实现memcpy
void * my_memcpy ( void * dst, const void * src, size_t count){ void * ret = dst; while (count--) { *(char *)dst = *(char *)src; dst = (char *)dst + 1; src = (char *)src + 1; } return(ret);}·如果dst 和src指向同一个数组会发生什么?
int main(){ int arr1[10] = { 1,2,3,4,5,6,7,8,9,0 }; // 预期结果 1 2 1 2 3 4 7 8 9 0 my_memcpy(arr1+2, arr1, 16); for (int i = 0; i < 10; i++) { printf("%d ", arr1[i]); }}实际为 1 2 1 2 1 2 7 8 9 0
因为到5 6 的时候3 4被改成了1 2 ,5 6也就被改成1 2。
也就是说被复制的元素在复制前被改变了,导致复制结果失败。
如果是这样指向同一个数组呢?
int main(){ int arr1[10] = { 1,2,3,4,5,6,7,8,9,0 }; my_memcpy(arr1, arr1+2, 16); for (int i = 0; i < 10; i++) { printf("%d ", arr1[i]); }}复制结果没有问题。
对于这种情况,c语言有一个更强大的函数memmove.
void * memmove( void * destination, const void * source, size_t num );
与memcpy的功能一样,但是memmove可以指向同一块空间。
模拟实现memmove
**void* my_memmove(void* dest, void* src, size_t num){ char* ret = dest; //如果指向同一块空间 判断地址大小,避免数据在被复制前被改变 if ( (char*)dest-(char*)src< 0){ while (num) { *((char*)dest)++ = *((char*)src)++; num--; } } else { while(num--){ *((char*)dest+num) = *((char*)src+num); } } return ret;}2.比较 memcmp
int memcmp ( const void * ptr1, const void * ptr2, size_t num );
从ptr1和ptr2的位置开始比较num个字节,当两个字节数据不同时就会返回。
ptr1>ptr2 返回值>0;
ptr1=ptr2 返回值=0;
ptr1
感谢你能够认真阅读完这篇文章,希望小编分享的"C语言中内存函数有哪些"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
函数
指向
篇文章
内存
语言
字节
数据
结果
同时
数组
空间
强大
两个
也就是
也就是说
价值
位置
元素
兴趣
功能
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
假期软件开发的相关经验
luckysheet写入数据库
为什么数据库停止
mtk软件开发论坛
删除数据库表中最后一笔记录
我的世界基岩工业服务器
蒂森克虏伯服务器怎么看故障
基岩服服务器清楚实体
江西企业软件开发服务优化
江苏网络安全员倪志高
opay软件开发怎么样
新华it互联网科技学校
数据库一体机架构
安卓研发属于软件开发吗
服务器管理员工作职责
完美世界手游ios服务器
社交直播app软件开发
2008数据库置疑修复语句
南昌互联网科技地址
管理系统用什么服务器
视频会议软件数据库
app 服务器安全
软件开发北京上海
目前主流的无线网络技术是802
服务器管理员工作职责
全国网络技术数据汇总
广州科信软件开发有限公司
淄川销售软件开发报价
dns服务器首选什么意思
xbox端的mc如何添加服务器