【进阶C语言】内存函数(详解)(二)

简介: 【进阶C语言】内存函数(详解)(二)

3. memcmp


3.1 memcmp的介绍

int memcmp ( const void * ptr1,  const void * ptr2,  size_t num );

比较从ptr1和ptr2指针开始的num个字节

返回值如下:

3.2 memcmp的使用

int main()
{
  int arr1[] = { 1,2,3,4,5 };//01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00
  int arr2[] = { 1,2,3,4,6 };//01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 06 00 00 00
  int ret = memcmp(arr1, arr2, 17);
  printf("%d\n", ret);
}


代码结果:


4. memset


4.1 memset的介绍

void * memset ( void * ptr, int value, size_t num );

将 ptr 指向的内存块的第一个字节数设置为指定值(解释为无符号字符)。


4.2 memset的使用

int main()
{
  char arr[] = "hello world";//以字节为单位来进行设置的
  memset(arr, 'x', 5);
  printf("%s\n", arr);
}


代码结果:

注意:memset是以字节为单位来进行设置的!!

什么意思呢?

int main()
{
  int arr[10] = { 0 };
  //01 01 01 01
  memset(arr, 1, sizeof(arr));//这种写法无法将数据的每个元素设置为1
  int i = 0;
  for (i = 0; i < 10; i++)
  {
  printf("%x ", arr[i]);
  }
}


体会代码结果:


这种写法无法将数据的每个元素设置为1



如果这份博客对大家有帮助,希望各位给恒川一个免费的点赞作为鼓励,并评论收藏一下,谢谢大家!!!

制作不易,如果大家有什么疑问或给恒川的意见,欢迎评论区留言。

相关文章
|
1天前
|
C语言
指针进阶(C语言终)
指针进阶(C语言终)
|
1天前
|
编译器 程序员 Serverless
|
1天前
|
机器学习/深度学习 C语言
详细解读C语言math.h中常用函数
详细解读C语言math.h中常用函数
|
1天前
|
C语言
C语言刷题(函数)
C语言刷题(函数)
|
1天前
|
存储 C语言
c语言scanf函数用法
c语言scanf函数用法
|
18小时前
|
存储 编译器 C语言
C语言的联合体:一种节省内存的数据结构
C语言的联合体:一种节省内存的数据结构
6 0
|
18小时前
|
存储 C语言
C语言中的变量与函数详解
C语言中的变量与函数详解
2 0
|
21小时前
|
存储 C语言
C语言中的printf函数详解
C语言中的printf函数详解
5 0
|
12天前
|
消息中间件 存储 Kafka
实时计算 Flink版产品使用问题之 从Kafka读取数据,并与两个仅在任务启动时读取一次的维度表进行内连接(inner join)时,如果没有匹配到的数据会被直接丢弃还是会被存储在内存中
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
4天前
|
存储 Java C++
Java虚拟机(JVM)管理内存划分为多个区域:程序计数器记录线程执行位置;虚拟机栈存储线程私有数据
Java虚拟机(JVM)管理内存划分为多个区域:程序计数器记录线程执行位置;虚拟机栈存储线程私有数据,如局部变量和操作数;本地方法栈支持native方法;堆存放所有线程的对象实例,由垃圾回收管理;方法区(在Java 8后变为元空间)存储类信息和常量;运行时常量池是方法区一部分,保存符号引用和常量;直接内存非JVM规范定义,手动管理,通过Buffer类使用。Java 8后,永久代被元空间取代,G1成为默认GC。
11 2