memset(addr, val, size);
創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網綜合服務,包含不限于成都做網站、成都網站建設、葉城網絡推廣、小程序制作、葉城網絡營銷、葉城企業(yè)策劃、葉城品牌公關、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)為所有大學生創(chuàng)業(yè)者提供葉城建站搭建服務,24小時服務熱線:028-86922220,官方網址:www.cdcxhl.com
把addr地址開始的內存,大小為size字節(jié)的值,賦值為val
相當于
unsigned?char?*?t?=?(unsigned?char?*)addr;
int?i;
for(i?=?0;?i??size;?i?++)
t[i]?=?val;
效果一樣,不過一般memset不會這么實現(xiàn),而是采用更高效的方法
memset
原型:extern
void
*memset(void
*buffer,
int
c,
int
count);
用法:#include
string.h
功能:把buffer所指內存區(qū)域的前count個字節(jié)設置成字符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;
}
相關函數(shù):bzero,setmem,strset
j=0;是一句初始化語句,在int
j;聲明變量后變量的值是未知的,所以要在使用前賦初值。
memset(word,0,21);這個函數(shù)第一參數(shù)是一個指針,指向目標內存的首地址,第二個參數(shù)是你要賦給指定內存塊中各個字節(jié)的值。第三個參數(shù)是被操作內存塊的字節(jié)數(shù)。連在一起這個語句的意思是,從word指向的內存地址開始的21個字節(jié)的內存,賦成0。其實也是一個初始化操作。
memset
原型:extern void *memset(void *buffer, int c, int count);
用法:#include string.h
功能:把buffer所指內存區(qū)域的前count個字節(jié)設置成字符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;
}
相關函數(shù):bzero,setmem,strset
memset()的函數(shù), 它可以一字節(jié)一字節(jié)地把整個數(shù)組設置為一個指定的值。 memset()函數(shù)在mem.h頭文件中聲明,它把數(shù)組的起始地址作為其第一個參數(shù),第二個參數(shù)是設置數(shù)組每個字節(jié)的值,第三個參數(shù)是數(shù)組的長度(字節(jié)數(shù),不是元素個數(shù))。其函數(shù)原型為:
void *memset(void*,int,unsigned);
其中void*表示地址
memset()的第一個實參是數(shù)組名,數(shù)組名作參數(shù)即數(shù)組作參數(shù),它僅僅只是一個數(shù)組的起始地址而已。
實現(xiàn)第一個memset()函數(shù)調用的內存布局見圖7-3。 在函數(shù)memset()棧區(qū),從返回地址往上依次為第1,2,3個參數(shù)。第1個參數(shù)中的內容是main()函數(shù)中定義的數(shù)組ia1的起始地址。第2個參數(shù)是給數(shù)組設置的值(0),第3個參數(shù)是數(shù)組的長度(50*2)。函數(shù)返回時,main()函數(shù)的數(shù)組中內容全置為0。