數組初始化


一. 格式

共兩種格式:

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?

2. 關於數組、結構體的初始化{0}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM