内存块处理函数-c语言

本文深入解析C语言中用于处理内存块的重要函数,包括memset、memcpy、memmove、memcmp和memchr的功能与使用场景。重点介绍了这些函数在内存初始化、复制、移动、比较和搜索方面的应用。

参考博客
c语言是一门很重要的语言,里面也有一些很重要的特性,其中包括了一些对内存块进行处理的函数.对内存块处理的速度要快于一般的字节处理,今天就讲解一些计较重要的内存块处理函数.c语言中这些函数在头文件string.h中

1. void *memset(void *a,int ch,size_t length)

这个函数我们并不陌生,这个函数用到的频率很多,对一片内存块(按字节)进行赋值,acm中经常用这个函数对数组进行初始化.注意,只能初始化为0,或-1.
例如对数组a[length]初始化:memset(a,0,sizeof(a));

2. void *memcpy(void *dest,void const *src,size_t length),void *memmove(void *dest,void const *src,size_t length)

对一片内存块进行赋值,把src的内容赋值到dest,赋值的长度为length(按字节).要注意长度如果是自己写的整数的话注意类型转换字节后的数值
memmove和memcpy含义一样;

  • 注:memmove和memcpy的区别在memcpy不能保证地址重叠是赋值是正确的,里面的细节何可参考这篇博客.但是我要说的是在我电脑上我试了很多次都是没问题的.可能是比较老的版本有这种问题,现在新版本改进了.

3. void *memcmp(void const *a,void const *b,size_t length)

对内存进行比较,负值表示a<b,正值表示a>b,0表示相等
 
4. void *memchr(void const *a,int ch,size_t length)

表示在内存中找第一个字符ch出现的位置,没找到则返回NULL

#include<stdio.h>
#include<string.h>
int main()
{
	int a[20],b[20];
	printf("%d %d\n",a[5],b[5]);
	for(int i=0;i<20;i++){
		a[i]=i+1;
	}printf("%d %d\n",a[5],b[5]);
	memcpy(b,a,sizeof(a));
	printf("%d %d",a[5],b[5]);
	memcpy(a,a+1,sizeof(a)-4);
	printf("%d %d\n",a[5],b[5]);
	printf("%d\n",memcmp(a,a+1,sizeof(a)-4));
	return 0;
}

好了常用的就是这些了.欢迎大家关注O(∩_∩)O哈哈~

转载于:https://www.cnblogs.com/i-curve/p/10152380.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值