memset库函数

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

memset库函数
头⽂件:#include <string.h>
定义函数:void * memset(void *s, int c, size_t n);
函数说明:memset()会将参数s 所指的内存区域前n 个字节以参数c 填⼊,然后返回指向s 的指针。

在编写程序时,若需要将某⼀数组作初始化,memset()会相当⽅便。

返回值:返回指向s 的指针。

附加说明:参数 c 虽声明为int,但必须是unsigned char,所以范围在0 到255 之间。

常⽤内存空间的初始化。

1、初始化字符数组(常⽤)
#include <stdio.h>
#include <string.h>
int main(void)
{
char s[5];
memset(s,'A',sizeof(s));
s[5]='\0';
puts(s);
return0;
}
2、初始化数组(注意:初始化为0正确实现,其他初始值还是通过循环语句实现)
#include <stdio.h>
#include <string.h>
int main(void)
{
int i,array1[5],array2[5];
memset(array1,0,sizeof(array1));
for(i=0; i<5; ++i)
printf("%d ",array1[i]);
printf("\n");
memset(array2,1,sizeof(array2));
for(i=0; i<5; ++i)
printf("%d ",array2[i]);
return0;
}
通过库函数memset()来对⼀个数组进⾏初始化,需要了解⼀下该函数的⼯作原理。

库函数memset()是针对字节操作的,其中第⼆个参数值被赋给第⼀个参数指向的内存地址开始的每⼀个字节,因此,这种初始化其实存在局限性,也导致其主要⽤于清除数组内容等。

⽐如:假设
i=0,1,2,...
memset(a,0,sizeof(a)); // 此时a[i]=0x00000000
memset(a,-1,sizeof(a)); // 此时a[i]=0xffffffff
memset(a,0x0f,sizeof(a)); // 此时a[i]=0x0f0f0f0f=252645135
由于500=0x1f4,400=0x190,因此,如果使⽤
memset(a,0x190,sizeof(a)); // 此时a[i]=0x90909090
所以,初始化过程还是建议使⽤循环语句来做。

相关文档
最新文档