数组初始化


一. 格式

共两种格式:

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