十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
memset(addr, val, size);
创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都做网站、成都网站建设、叶城网络推广、小程序制作、叶城网络营销、叶城企业策划、叶城品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供叶城建站搭建服务,24小时服务热线:028-86922220,官方网址:www.cdcxhl.com
把addr地址开始的内存,大小为size字节的值,赋值为val
相当于
unsigned char * t = (unsigned char *)addr;
int i;
for(i = 0; i size; i ++)
t[i] = val;
效果一样,不过一般memset不会这么实现,而是采用更高效的方法
memset
原型:extern
void
*memset(void
*buffer,
int
c,
int
count);
用法:#include
string.h
功能:把buffer所指内存区域的前count个字节设置成字符c。
说明:返回指向buffer的指针。
举例:
//
memset.c
#include
syslib.h
#include
string.h
main()
{
char
*s="Golden
Global
View";
clrscr();
memset(s,'G',6);
printf("%s",s);
getchar();
return
0;
}
相关函数:bzero,setmem,strset
j=0;是一句初始化语句,在int
j;声明变量后变量的值是未知的,所以要在使用前赋初值。
memset(word,0,21);这个函数第一参数是一个指针,指向目标内存的首地址,第二个参数是你要赋给指定内存块中各个字节的值。第三个参数是被操作内存块的字节数。连在一起这个语句的意思是,从word指向的内存地址开始的21个字节的内存,赋成0。其实也是一个初始化操作。
memset
原型:extern void *memset(void *buffer, int c, int count);
用法:#include string.h
功能:把buffer所指内存区域的前count个字节设置成字符c。
说明:返回指向buffer的指针。
举例:
// memset.c
#include syslib.h
#include string.h
main()
{
char *s="Golden Global View";
clrscr();
memset(s,'G',6);
printf("%s",s);
getchar();
return 0;
}
相关函数:bzero,setmem,strset
memset()的函数, 它可以一字节一字节地把整个数组设置为一个指定的值。 memset()函数在mem.h头文件中声明,它把数组的起始地址作为其第一个参数,第二个参数是设置数组每个字节的值,第三个参数是数组的长度(字节数,不是元素个数)。其函数原型为:
void *memset(void*,int,unsigned);
其中void*表示地址
memset()的第一个实参是数组名,数组名作参数即数组作参数,它仅仅只是一个数组的起始地址而已。
实现第一个memset()函数调用的内存布局见图7-3。 在函数memset()栈区,从返回地址往上依次为第1,2,3个参数。第1个参数中的内容是main()函数中定义的数组ia1的起始地址。第2个参数是给数组设置的值(0),第3个参数是数组的长度(50*2)。函数返回时,main()函数的数组中内容全置为0。