C语言中me开头的函数的使用

发布时间 2023-03-23 10:38:24作者: 虎啸岳林

C语言中,有一系列的函数以me结尾,如memcpy、memmove、memset等。这些函数都是用来操作内存的。

其中,memcpy函数用于将一个内存地址的内容复制到另一个内存地址,

memmove函数也是用于将一个内存地址的内容复制到另一个内存地址,但是它可以处理内存重叠的情况,而memcpy则不能。

memset函数用于将一个内存地址的内容全部设置为某个值。

以下是这些函数的简单示例:

#include <stdio.h>
#include <string.h>

int main () {
   char str1[20] = "hello";
   char str2[20] = "world";
   char str3[20];
   char str4[20];

   /* 复制 str1 到 str3 */
   memcpy(str3, str1, strlen(str1)+1);
   printf("memcpy(str3, str1, strlen(str1)+1): %s\n", str3);

   /* 复制 str2 到 str4 */
   memmove(str4, str2, strlen(str2)+1);
   printf("memmove(str4, str2, strlen(str2)+1): %s\n", str4);

   /* 设置 str1 为 'r' */
   memset(str1, 'r', strlen(str1));
   printf("memset(str1, 'r', strlen(str1)): %s\n", str1);

   return 0;
}
//memcpy和memmove函数的第三个参数是要复制的字节数。因为字符串以'\0'结尾,所以要将'\0'也复制过去,所以要strlen(str1)加1。而memset函数的第三个参数是要设置的字节数,所以不需要加1。
//memset函数只会将指定的字节数设置为某个值。在这个例子中,strlen(str1)返回的是字符串str1的长度,所以memset函数只会将字符串str1的前5个字符设置为'r',而不是整个str1的内存都设置为'r'。