一. 格式
共兩種格式:
char buf[32] = {0}; int buf[32] = {0};
適用於所有類型。
char buf[32] = "";
僅適用於char,相當於定義一個‘\0’的空串。
二. 初始化為0
數組初始化為0的方法有如下三種:
1. 全局變量和靜態變量初始化時會自動被設置為0。
#include <stdio.h> #include <string.h> //char cbuf[32]; // 全局變量 int main(int argc, char *argv[]) { int ret = 0, i = 0, j = 0; while(1){ char buf[32] = {0}; ret = scanf("%s", buf); printf("input bytes [%d]:%s\n", ret, buf); for(;j++<10;); printf("j=%d\n", j); static char cbuf[32]; // 靜態變量 printf("\ninit buf==========\n"); for(i = 0; i < sizeof(cbuf); ){ printf("0x%x\t", cbuf[i]); if((++i)%5 == 0){printf("\n");} } printf("\n"); } return 0; }
2. 對於局部數組我們還有簡寫的初始化語法。如果一個數組被部分初始化,沒有被初始化的元素會被自動設置為相應類型的0。這是編譯器自動完成的。
如格式中提到的都是部分初始化:
char buf[32] = {0}; int buf[32] = {0}; char buf[32] = "";
注:部分初始化不一定都要初始化為0,但沒有被初始化的元素自動設置為相應類型的0。
3. 程序初始化,包括for(;;)或memset()等。
參考:
1. 如何將數組初始化為全0?