C语言的编程之美之内存函数
前言
在C语言中,内存函数是常用的函数之一,它们用于操作内存,包括内存拷贝、内存移动、内存比较等等。本文将介绍几个常用的内存函数,并提供相应实例。
内存拷贝函数 - memcpy()
memcpy()
函数用于将某一段内存区域的内容拷贝到另一段内存区域中,可以用于拷贝任意类型的数据到任意位置。其函数原型如下:
void *memcpy(void *dest, const void *src, size_t n);
其中,dest
表示目标内存的起始地址,src
表示要被拷贝的内存块的起始地址,n
表示要拷贝的字节数。
示例1:
#include <stdio.h>
#include <string.h>
int main () {
const char src[20] = "Hello";
char dest[20] = "";
memcpy(dest, src, strlen(src)+1);
printf("拷贝的字符串:%s\n", dest);
return 0;
}
输出:
拷贝的字符串:Hello
示例2:
#include <stdio.h>
#include <string.h>
int main () {
int src[5] = {1, 2, 3, 4, 5};
int dest[5] = {0};
memcpy(dest, src, sizeof(src));
for (int i = 0; i < 5; i++) {
printf("%d ", dest[i]);
}
return 0;
}
输出:
1 2 3 4 5
内存移动函数 - memmove()
memmove()
函数也用于内存拷贝,其功能与memcpy()
类似,但是针对的是有重叠部分的内存块拷贝。其函数原型如下:
void *memmove(void *dest, const void *src, size_t n);
同样,dest
表示目标内存的起始地址,src
表示要被拷贝到的内存块的起始地址,n
表示要拷贝的字节数。
示例1:
#include <stdio.h>
#include <string.h>
int main () {
char str[] = "memmove函数实例";
memmove(str+4, str, strlen(str)+1);
printf("移动后的字符串:%s\n", str);
return 0;
}
输出:
移动后的字符串:move函数实例mem
示例2:
#include <stdio.h>
#include <string.h>
int main () {
int arr[10] = {1, 2, 3, 4, 5};
memmove(arr+1, arr, 3*sizeof(int));
for (int i = 0; i < 5; i++) {
printf("%d ", arr[i]);
}
return 0;
}
输出:
1 1 2 3 5
内存比较函数 - memcmp()
memcmp()
函数用于比较两个内存的内容是否相同。其函数原型如下:
int memcmp(const void *s1, const void *s2, size_t n);
其中,s1
和s2
分别表示要被比较的两段内存地址,n
表示要比较的字节数。
示例1:
#include <stdio.h>
#include <string.h>
int main () {
char str1[15] = "apple";
char str2[15] = "appie";
int result = memcmp(str1, str2, 3);
if (result > 0) {
printf("前三个字符不相同,%c > %c\n", str1[0], str2[0]);
} else if (result < 0) {
printf("前三个字符不相同,%c < %c\n", str1[0], str2[0]);
} else {
printf("前三个字符相同\n");
}
return 0;
}
输出:
前三个字符不相同,a < i
示例2:
#include <stdio.h>
#include <string.h>
int main () {
int arr1[5] = {1, 2, 3, 4, 5};
int arr2[5] = {1, 2, 3, 4, 6};
int result = memcmp(arr1, arr2, sizeof(arr1));
if (result > 0) {
printf("arr1 > arr2\n");
} else if (result < 0) {
printf("arr1 < arr2\n");
} else {
printf("arr1 == arr2\n");
}
return 0;
}
输出:
arr1 < arr2
结论
通过本文的介绍,我们了解了C语言中常用的内存函数,包括内存拷贝、内存移动、内存比较。这些函数可以极大地方便我们对内存的操作。需要注意的是,在使用这些函数时,要确保目标地址和源地址不重叠,否则可能会出现不可预期的结果。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言的编程之美之内存函数 - Python技术站