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