在C语言中有着常见的内存函数,他们可以对内存进行操作,即可以修改内存的内容等,下面我们来简略地学习一下
cpy是复制的意思,顾名思义,就是将一块指定大小的内存的字节逐一赋值到新的内存块上,下面是memcpy的定义
void * memcpy ( void * destination, const void * source, 1 size_t num );
下面我们可以举一个简单的使用案例
#include
#include
int main() {
int arr1[10] = { 0,1,2,3,4,5,6,7,8,9 };
int arr2[10];
memcpy(arr2, arr1, sizeof(arr1));
for (int i = 0; i < 10; i++) {
printf("%d ", arr2[i]);
}
printf("\n");
return 0;
}
可以看到,这里我将arr1数组的内存数据复制到了arr2数组中
memcpy使用细节:
memmove的功能与memcpy的功能可以说是一样的,但是memmove有一个与memcpy不同的点,就是memmove可以操作重叠的内存,因为memmove会将要复制的内存的内容复制到临时缓冲区,然后再复制带目标内存中
void * memmove ( void * destination, const void * source,size_t num );
下面我们进行演示
#include
#include
int main() {
int arr1[10] = { 1,2,3,4,5,6,7,8,9,10 };
int arr2[10];
memmove(arr2, arr1, sizeof(arr1));
memmove(arr1 + 1, arr1, sizeof(int) * 9);
for (int i = 0; i < 10; i++) {
printf("%d ", arr1[i]);
}
printf("\n");
for (int i = 0; i < 10; i++) {
printf("%d ", arr2[i]);
}
return 0;
}
这里我将arr1中的数据复制到了arr2中,然后将arr1的数据进行了后移
memset的函数的作用是将指定内存大小的内存块中的值设置为想要的值
void * memset ( void * ptr, int value, size_t num );
下面我们来举例一些例子
#include
#include
int main() {
char arr1[] = "HelloWorld!";
printf("%s\n", arr1);
memset(arr1, 'X', 5);
printf("%s\n", arr1);
return 0;
}
memcmp 逐字节比较两个内存区域的内容,比较的字节数由参数 n 指定。比较从两个内存区域的起始位置开始,依次比较每个字节的值
返回值
int memcmp ( const void * ptr1, const void * ptr2, size_t num );
同样我们举例一下案例
#include
#include
int main() {
char arr1[] = "HelloWorld!";
char arr2[] = "AelloWorld!";
if (memcmp(arr1, arr2, sizeof(arr1)) > 0) {
printf("arr1字符串大!\n");
}
return 0;
}
这里我使用了字符串比较,但并不代表着只能比较字符串,memcmp也可以比较其他类型的数组
使用细节
关于内存函数的C语言知识就讲到这里了,如果感兴趣的同学也可以自己网上搜索学习更多,希望这篇文章也可以帮助你更好的理解常见的内存函数,与此同时,谢谢你的阅读!