【C语言】数组
数组
初窥门径
我在计算天数,和计算位数的md中都接触了数组
包括可汗大点兵中的数组
所记下来的笔记:
问题:
int days_in_month[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
和
int count[10] = { 0 };
这两个数组用法有什么不同,这个[]里面和{}的区别与联系
回答:
1. 本质区别
days_in_month[]的特点- 数组初始化时明确指定了每个元素的值
{31, 28, ..., 31},共 12 个元素。 - 数组声明时
[]内未写长度,编译器会根据初始化列表中元素的数量(12 个)自动推断数组长度为 12。 - 用途是存储每个月的天数(非闰年),元素值是预先确定的固定值。
- 数组初始化时明确指定了每个元素的值
count[10] = {0}的特点- 数组声明时
[]内明确指定了长度为 10,即数组有 10 个元素。 - 初始化列表只给了一个值
0,根据 C 语言规则:未明确初始化的元素会被自动赋为 0 (对于全局 / 静态数组)或默认值(局部数组未初始化时是随机值,但这里显式初始化了第一个元素,其余会被补 0)。 - 用途通常是作为计数器,初始化为全 0 方便后续累加。
- 数组声明时
2. 联系
- 两者配合使用完成数组的声明与初始化:
类型 数组名[长度] = {初始化值};。 - 当
[]省略长度时,{}中元素的数量直接决定数组的长度(如days_in_month因{}中有 12 个值,故长度为 12)。 - 当
[]指定长度时,{}中值的数量可以少于该长度,未指定的元素会被自动初始化(数值型数组补 0,字符数组补'\0'等)。
总结
[]负责定义数组的长度(容量),{}负责给数组元素赋初始值。days_in_month[]依赖{}中的元素数量确定长度,且所有元素都显式初始化;count[10] = {0}明确指定了长度,仅显式初始化第一个元素,其余自动补 0。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 王总的博客!



