版权声明:未经博主允许,禁止转载 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函数,下一篇会讲解