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