您好,登录后才能下订单哦!
本篇内容主要讲解“C语言内存操作函数有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言内存操作函数有哪些”吧!
作用:内存拷贝
函数原型:
void *memcpy( void *dest, const void *src, size_t count );
使用:
使用格式:memcpy(目的地,原,想操作内存大小(单位字节))
把 "参数2" 起始的 "参数3" 个字节 内容拷贝到 "参数1 '
memecpy函数类似于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));//把aa数组中4*4(每个int类型是4字节)内容拷贝到bb数组 for (int i = 0; i < 10; i++) //打印bb数组全部数据 { printf("%d ", bb[i]); } }
最后bb字符串中前4*4个字节的内容被改为aa的内容
注意 :memcpy不能拷贝重叠内存。
#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]); } }
输出:
拷贝重叠内存会出现这样的问题。
作用:内存拷贝(可拷贝重叠内存)
原型:
void *memmove( void *dest, const void *src, size_t count );
使用与memcpy一样,只是memmove可以拷贝重叠内存
#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就可以.
作用:内存比较
函数原型:
int memcmp( const void *buf1, const void *buf2, size_t count );
使用:
使用格式:memcmp(地址1,地址2,想要比较的内存大小 单位bit)
逐字节比较内存大小,
逐字节一对一对比较!!
返回值有三种情况:
<0 “参数1” 与 “参数2” 逐字节比较时遇到的第一对不同的内存时 “参数1” 中数据 < “参数2”。
=0 “参数1” 与 “参数2” 中的前“ 参数” 三个字节的内容完全相等。
>0 “参数1” 与 “参数2” 逐字节比较时遇到的第一对不同的内存时 “参数1” 中数据 > “参数2”。
作用:内存设置
函数原型:
void *memset( void *dest, int c, size_t count );
使用:
使用格式:memset(地址,一个数,设置多少字节)
例:
#include <memory.h> int main() { int a[] = {1,2,3,4,5}; memset(a, 1, 20);//把从a开始的前二十个字节内容改成1 }
结果:
到此,相信大家对“C语言内存操作函数有哪些”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。