memset函数

Posted 你有多努力,就有多幸运!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了memset函数相关的知识,希望对你有一定的参考价值。

 1 //程序范例
 2 #include <stdio.h>
 3 #include <string.h>
 4 
 5 int main(void)
 6 {
 7     int i, j, k;
 8     char buffer[] = "Helloworld\n";
 9     printf("Buffer before memset:%s", buffer); //输出结果Buffer before memset:Helloworld
10     memset(buffer,*, strlen(buffer));
11     printf("Buffer after memset:%s\n", buffer);//输出结果Buffer after memset:***********
12 
13     //该处的ch可为int或者其他类型,并不一定要是char类型
14     int array[5] = {1,4,3,5,2};
15     for(i=0; i<5; i++)
16         printf("%d ", array[i]);            //输出结果1 4 3 5 2
17     printf("\n");
18 
19     memset(array, 0, 5*sizeof(int));
20     for(j=0; j<5; j++)
21         printf("%d ", array[j]);            //输出结果0 0 0 0 0
22     printf("\n");
23 
24     memset(array, 1, 5*sizeof(int));        //使用memset是按字节赋值,每个数组元素的值实际上是0x01010101即十进制的16843009
25     for(k=0; k<5; k++)
26         printf("%d ", array[k]);            //输出结果16843009 16843009 16843009 16843009
27     printf("\n");
28     return 0;
29 }
30 /*
31 *因memset是对字节进行操作,以字节为单位就是对array指向的内存的4个字节进行赋值,每个字节用数1去填充,转为二进制后,1就是00000001,
32 *一个int元素是4字节,合一起是0000 0001,0000 0001,0000 0001,0000 0001,转化成十六进制就是0x01010101,就等于16843009,完成对一个int元素的赋值
33 *所以用memset对非字符型数组赋初值是不可取的!
34 */

 本文参考链接:

http://baike.baidu.com/link?url=svs6WnjQKV7Ugx3SZke6BvyVy99OOE8I-zn8gSw0HFb-YD-IIcdf2F2h5WGslM4Q4Dog28oXyjX51lnvF2n0Kq

以上是关于memset函数的主要内容,如果未能解决你的问题,请参考以下文章

与memset函数等效的Linux内核是什么?

c语言memset()函数

函数“memset”的隐式声明 [-Wimplicit-function-declaration] [重复]

c/c++中对于memset的个人理解

memset()函数

请教高手:memset函数详细讲解?