一.memset函数的使用
这个函数有三个参数。这个函数的作用是设置。
我就简单用代码来试一下这个函数的作用。
这里主要要注意的是,这里的5是以字节为单位的。所以用这个函数来设置整型是做不到的,因为整型有四个字节。比如这个代码的结果不是我们期望的那样。
#include <stdio.h>
int main()
{
int arr[] = { 1,2,3,4,5 };
memset(arr, 1, 20);
for (int i = 0; i < 5; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
那么这个函数大家可能就了解了用法,我们再来看一个函数。
二.memcmp函数的使用
这个函数有三个参数,作用是比较。
这个函数是比较ptr1和ptr2所指向的位置开始,向后的num个字节。和strcmp的返回值一样,如果ptr1比ptr2大,则返回大于0的数。ptr1比ptr2小,则返回小于0的数字。相等则返回0。但是memcmp针对的是内存块的比较,而strcmp针对的是字符串。直接给大家上个代码来看一下这个函数怎么操作的。
#include <stdio.h>
int main()
{
int arr1[] = { 1,2,3,4,5,6,7 };
int arr2[] = { 1,2,3,4,9,9,9 };
int ret = memcmp(arr1, arr2, 16);
printf("%d", ret);
return 0;
}
这里比较的就是前16个字节,肯定是相等的。输出的结果是0。但是如果我比较前17个字节呢?
#include <stdio.h>
int main()
{
int arr1[] = { 1,2,3,4,5,6,7 };
int arr2[] = { 1,2,3,4,9,9,9 };
int ret = memcmp(arr1, arr2, 17);
printf("%d", ret);
return 0;
}
答案是-1。至于为什么,这就关系到大小端存储的问题了。
这是arr1:
这是arr2:
当我们比较到17个字节的时候arr1是05,而arr2是09。这样一比其实就能看出来哪个大哪个小了。关于数据在内存中的存储我在之后会再写博客来讲。
感谢观看,如有错误请多多指正。