一、数组的初始化
1.我们已知要存放的数的顺序、内容。
int a[]={1,2,3};//也可以写作int a[3] = {1,2,3};
printf("%d\n",sizeof(a));//结果是12.要知道,一个int长度就是4个字节
printf("%d",a[1]);//结果是2.注意,a[5]=随机乱码
2.只是随意想创造一个数组
int a[] ={};
printf("%d",sizeof(a));
可以看到我们令数组为空。说实话,我没想到编译没出现问题。
然后我有点好奇,我想要看看这个不曾被任意操作的数组里面到底有些什么
#include <stdio.h>
int main(void)
{
int a[] ={};
for (int i=1;i<=105;i++){
printf("%d\n",a[i]);
}
}
可以看到大部分是0,其间镶嵌着奇怪的数字。我猜测,这些数字和我的电脑内存有关系。
3.试图存放更多的数进去
int b[3]={1,2,3,4,5,6};
进行这样操作编译器会报错:: [Error] too many initializers for 'int [3]'
int a[10]={1,2,3};
这样却不会报错。并且发现:打印出a数组的前十项分别是1 2 3 0 0 0 0 0 0 0
如果打印出前二十项,则是 从第11到第20项 在0之间随机散布数字。
//我意识到我可以通过函数精简我的代码,然而,我暂时不了解如何对函数传入数组。所以姑且用了冗杂的代码。//
4.快速初始化数组:
int a[10]={2};
for (int i = 0;i<=9;i++){
printf("%d\t",a[i]);
}
printf("\n");
int b[10]={0};
for (int i = 0;i<=9;i++){
printf("%d\t",b[i]);
}
可以看到,这种方法可以令首位为我们设定的数,其他位标为0;