c/c++使用{}初始化数组需要注意的(2)

版权声明:未经博主允许,禁止转载 https://blog.csdn.net/Think88666/article/details/85095428

c/c++语言中,数组初始化的方式主要有三种:

1、声明时,使用 {0} 初始化;

2、使用memset;

3、用for循环赋值。

这次我们重点关注第1点,我们来看下面的代码

int main(int argc, char *argv[])
{
    int a[10];
    for(int i=0;i<sizeof(a)/sizeof(int);i++)
        printf("%d \n",a[i]);
}

打印结果如下:

19659704

19672824

14351412

14351412

19672824

扫描二维码关注公众号,回复: 4700401 查看本文章

0

14351452

17910228

1

14351492

很明显没有初始化后打印的是随机值,接下来继续:

int main(int argc, char *argv[])
{
    int a[10] = {0};
    for(int i=0;i<sizeof(a)/sizeof(int);i++)
        printf("%d \n",a[i]);

}

由于多了初始化操作,数组打印结果如下:

0

0

0

0

0

0

0

0

0

0

很明显,数组的所有值都被初始化为0了,那么肯定有人会说如果执行 int a[10] = {1}结果会怎么样?:

int main(int argc, char *argv[])
{
    int a[10] = {1};
    for(int i=0;i<sizeof(a)/sizeof(int);i++)
        printf("%d \n",a[i]);

}

打印结果:

1

0

0

0

0

0

0

0

0

0

结果发现只初始化第一个元素为1,其余都是0!!

结论:

初始化所有元素为0时可以用{0}来赋值,但初始化为其他值是不行的!我们可以逐个赋值或{1,12,2....}

具体是怎么回事需要理解memset函数,下一篇会讲解

猜你喜欢

转载自blog.csdn.net/Think88666/article/details/85095428