C语言内存函数(2)【memset函数的使用】【memcmp函数的使用】

一.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。这样一比其实就能看出来哪个大哪个小了。关于数据在内存中的存储我在之后会再写博客来讲。

感谢观看,如有错误请多多指正。

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-24 20:08:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-24 20:08:05       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-24 20:08:05       82 阅读
  4. Python语言-面向对象

    2024-03-24 20:08:05       91 阅读

热门阅读

  1. ChatGPT:提升论文写作能力

    2024-03-24 20:08:05       38 阅读
  2. Rust 语言中 Vec 的元素的删除方法

    2024-03-24 20:08:05       38 阅读
  3. 【深度学习】NestedTensors

    2024-03-24 20:08:05       35 阅读
  4. ubuntu安装k8s

    2024-03-24 20:08:05       34 阅读
  5. 用 Delphi 做 FTP 服务器以及如何配置防火墙

    2024-03-24 20:08:05       41 阅读
  6. spring boot整合elasticsearch实现查询功能

    2024-03-24 20:08:05       41 阅读
  7. vim | vim的快捷命令行

    2024-03-24 20:08:05       38 阅读
  8. 阅读 MySQL知识1

    2024-03-24 20:08:05       37 阅读
  9. Vue常用指令介绍

    2024-03-24 20:08:05       40 阅读
  10. 2024网络安全&数据安全加固类资料合集

    2024-03-24 20:08:05       37 阅读