想用 memset 將 int arr[100] 全部設為 0,網路上說法不一,是否需轉型指標?
#include <string.h>
int arr[100];
memset(arr, 0, sizeof(arr)); // 正確:sizeof 計算整個陣列位元組數
memset 逐位元組填充,0 位元組模式對任何整數型別皆代表數值 0,故可直接用於 int、long、指標等。int 每個位元組皆為 0x01,組成 0x01010101 (16843009),非預期數值,切記只能用於 0 或 -1(全 1 位元組)。#include <stdio.h>
#include <string.h>
int main() {
int a[5] = {1,2,3,4,5};
memset(a, 0, sizeof(a)); // 全歸零
for(int i=0;i<5;i++) printf("%d ", a[i]); // 0 0 0 0 0
return 0;
}
更多細節參考:memset 詳細用法