C:数组的部分初始化与过分初始化

#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

也可以通过下标形式初始化,但是很奇怪,应该没人这么干吧。

未完待续~~~每天进步一丢丢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值