小白C语言基础详解:数组

数组

简介

数组是一组相同类型的值,按照顺序储存在一起。数组通过变量名后加方括号表示,方括号里面是数组的成员数量。

int scores[100];

上面示例声明了一个数组scores,里面包含100个成员,每个成员都是int类型。

注意,声明数组时,必须给出数组的大小。

数组的成员从0开始编号,所以数组scores[100]就是从第0号成员一直到第99号成员,最后一个成员的编号会比数组长度小1

数组名后面使用方括号指定编号,就可以引用该成员。也可以通过该方式,对该位置进行赋值。

scores[0] = 13;
scores[99] = 42;

上面示例对数组scores的第一个位置和最后一个位置,进行了赋值。

注意,如果引用不存在的数组成员(即越界访问数组),并不会报错,所以必须非常小心。

int scores[100];

scores[100] = 51;

上面示例中,数组scores只有100个成员,因此scores[100]这个位置是不存在的。但是,引用这个位置并不会报错,会正常运行,使得紧跟在scores后面的那块内存区域被赋值,而那实际上是其他变量的区域,因此不知不觉就更改了其他变量的值。这很容易引发错误,而且难以发现。

数组也可以在声明时,使用大括号,同时对每一个成员赋值。

int a[5] = {
   
   22, 37, 3490, 18, 95};

注意,使用大括号赋值时,必须在数组声明时赋值,否则编译时会报错。

int a[5];
a = {
   
   22, 37, 3490, 18, 95}; // 报错

上面代码中,数组a声明之后再进行大括号赋值,导致报错。

报错的原因是,C 语言规定,数组变量一旦声明,就不得修改变量指向的地址,具体会在后文解释。由于同样的原因,数组赋值之后,再用大括号修改值,也是不允许的。

int a[5] = {
   
   1, 2, 3, 4, 5};
a = {
   
   22, 37, 3490, 18, 95}; // 报错

上面代码中,数组a赋值后,再用大括号重新赋值也是不允许的。

使用大括号赋值时,大括号里面的值不能多于数组的长度,否则编译时会报错。

如果大括号里面的值,少于数组的成员数量,那么未赋值的成员自动初始化为0

int a[5] = {
   
   22, 37, 3490};
// 等同于
int a[5] = {
   
   22, 37, 3490, 0, 0};

如果要将整个数组的每一个成员都设置为零,最简单的写法就是下面这样。

int a[100] = {
   
   0};

数组初始化时,可以指定为哪些位置的成员赋值。

int a[15] = {
   
   [2] = 29, [9] = 7, [14] = 48};

上面示例中,数组的2号、9号、14号位置被赋值,其他位置的值都自动设为0。

指定位置的赋值可以不按照顺序,下面的写法与上面的例子是等价的。

int a[15] = {
   
   [9] = 7, [14] = 48, [2] = 29};

指定位置的赋值与顺序赋值,可以结合使用。

int a[15] = {
   
   1, [5] = 10, 11, [10] = 20, 21}

上面示例中,0号、5号、6号、10号、11号被赋值。

C 语言允许省略方括号里面的数组成员数量,这时将根据大括号里面的值的数量,自动确定数组的长度。

int a[] = {
   
   22, 37, 3490};
// 等同于
int a[3] = {
   
   22, 37, 3490};

上面示例中,数组a的长度,将根据大括号里面的值的数量,确定为

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不会倒的鸡蛋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值