首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C 語言 memset 給整數陣列歸零:標準用法與陷阱

     編輯:程式設計綜合問答

想用 memset 將 int arr[100] 全部設為 0,網路上說法不一,是否需轉型指標?

標準寫法

#include <string.h>
int arr[100];
memset(arr, 0, sizeof(arr));  // 正確:sizeof 計算整個陣列位元組數
  • memset 逐位元組填充,0 位元組模式對任何整數型別皆代表數值 0,故可直接用於 int、long、指標等。
  • 若填充非 0 值(如 1),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 詳細用法

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved