#include <stdio.h>
#define SIZE 8
int main(void)
{
int nums[SIZE];
for(int i = 0; i < SIZE; i++)
{
printf("第%d个元素值为%d\n", i+1, nums[i]);
}
return 0;
}
运行结果:
第1个元素值为16
第2个元素值为0
第3个元素值为1223955705
第4个元素值为32758
第5个元素值为0
第6个元素值为0
第7个元素值为34
第8个元素值为0
不对数组做任何初始化动作时,数组中的元素值就是为数组分配内存之前存储的值。因此毫无规律乱七八糟。
#include <stdio.h>
#define SIZE 8
int main(void)
{
int nums[SIZE] = { 10 };
for(int i = 0; i < SIZE; i++)
{
printf("第%d个元素值为%d\n", i+1, nums[i]);
}
return 0;
}
运行结果如下:
第1个元素值为10
第2个元素值为0
第3个元素值为0
第4个元素值为0
第5个元素值为0
第6个元素值为0
第7个元素值为0
第8个元素值为0
如果对数组进行部分初始化,则其余元素值也会被初始化,如上int数组其余元素全部被初始化为0。
#include <stdio.h>
#define SIZE 8
int main(void)
{
int nums[SIZE] = { 10, 20, 30, 40, 50, 60, 70, 80, 90 };
for(int i = 0; i < SIZE; i++)
{
printf("第%d个元素值为%d\n", i+1, nums[i]);
}
return 0;
}
运行结果如下:
.\6.c: In function 'main':
.\6.c:7:60: warning: excess elements in array initializer
7 | int nums[SIZE] = { 10, 20, 30, 40, 50, 60, 70, 80, 90 };
| ^~
.\6.c:7:60: note: (near initialization for 'nums')
毫无疑问,如果初始化的元素数量超过数组大小那么直接喜提错误。
#include <stdio.h>
int main(void)
{
int nums[] = { 10, 20, 30, 40, 50, 60, 70, 80, 90 };
for(int i = 0; i < sizeof(nums)/sizeof(nums[0]); i++)
{
printf("第%d个元素值为%d\n", i+1, nums[i]);
}
return 0;
}
如果实在掌握不好大小,那么可以不指定大小,如上也没啥问题。
#include <stdio.h>
#define SIZE 8
int main(void)
{
int nums[SIZE] = { 10, [5] = 20 };
for(int i = 0; i < SIZE; i++)
{
printf("第%d个元素值为%d\n", i+1, nums[i]);
}
return 0;
}
运行结果如下:
第1个元素值为10
第2个元素值为0
第3个元素值为0
第4个元素值为0
第5个元素值为0
第6个元素值为20
第7个元素值为0
第8个元素值为0
也可以通过下标形式初始化,但是很奇怪,应该没人这么干吧。
未完待续~~~每天进步一丢丢