C语言——数组

C语言——数组

请添加图片描述


前言

人们通常借助计算机完成统计每月的支出、日降水量、季度销售额等任务,数组能高效便捷的处理这种数据,通过本章的学习,你将会详细了解数组的使用方法


1、数组是什么

数组是由数据类型相同的一系列元素组成。例如candy[ ],student[ ]都是数组,方括号([ ])中的数字表示数组的元素个数,要想访问数组中的元素,需要通过使用数组中的下标数(也称为索引)表示数组中的各元素,数组元素的编号从0开始,例如candy[0]表示candy数组的第一个元素,candy[365]表示candy数组的第364个数组。

2、初始化数组(使用数组前必须先初始化数组)

(1)以逗号分隔的值列表(用花括号括起来)初始化数组

代码如下(示例):方括号中的数字表示数组中元素的个数

int student[5] = { 1,2,3,4,5 };

(2)省略方括号中的数字

代码如下(示例):省略方括号中的数字,让编译器自动匹配数组大小和初始化列表中的项数

#include<stdio.h>
int main() {
	int days[] = { 31,28,31,30,31,30,31,31,30,31};
	for (int index = 0; index < sizeof(days) / sizeof(days[0]); index++) {
		printf("month %2d has %d days.\n", index + 1, days[index]);
	}
	return 0;
}

sizeof(days)是整个数组的大小(以字节为单位),sizeof(days[0])是数组中一个元素的大小(以字节为单位),整个数组的大小除以单个元素大小就是数组元素的个数。


3、给数组元素赋值

声明数组后,可以借助数组下标(或索引)给数组元素赋值

代码如下(示例):

int evens[5];
for (int counter = 0; counter < 5; counter++) {
	evens[counter] = 2 * counter;
}

C语言不允许把数组作为一个单元赋给另一个数组,除初始化以外也不允许使用花括号列表的形式赋值。


一些无效的数组赋值

代码如下(示例):无效的数组赋值

#include<stdio.h>
#define SIZE 5
int main() {
	int a[SIZE] = { 1,2,3,4 };
	int b[SIZE];
	b = a;//不允许,不能把数组作为单元赋给另一个数组
	b[SIZE] = a[SIZE];//数组下标越界
	b[SIZE] = { 1,2,3,4 };//不起作用,除初始化以外不允许使用花括号列表的方式给数组赋值
	return 0;
}

4、数组的边界

在使用数组时,要防止数组下标超出边界,也就是说,必须确保下标是有效的值。 例如:int days[20];在days数组中,必须保证程序中使用的数组下标在0~19,。为了保证程序的运行速度,编译器不会检查数组的下标是否使用得当。

5、指定数组的大小

代码如下(示例):

int m = 5;
int n = 8;
float a1[5];//可以
float a2[5 * 2 + 1];//可以
float a3[sizeof(int) + 1];//可以,sizeof表达式被视为整型常量
float a4[-4];//不可以,数组大小必须大于0
float a5[0];//不可以,数组大小必须大于0
float a6[2.5];//不可以,数组大小必须为整数
float a7[(int)2.5];//可以,已被强制转换成整数常量
float a8[n];//C99之前不允许
float a9[m];//C99之前不允许

6、多维数组

代码如下(示例):

float rain[5][12];//内含5个数组元素的数组,每个数组元素内含12个float类型的元素

简而言之,数组rain中有5个元素,每个元素内含12个float类型元素的数组,rain[0]是一个内含12个float值的数组,rain[0][0]是一个float值的数组。


7、初始化二维数组

初始化二维数组是建立在初始化一维数组的基础上。

代码如下(示例):初始化时也可以省略内部的花括号,只保留最外面的一对花括号,只要保证初始化的数值个数相等,初始化的效果与下面相同。但是如果初始化的数值不够,则按照先后顺序逐行初始化,直到用完所有的值,后面没有值初始化的元素则被统一初始化为0.

float rain[3][4] = { {1,2,3,4},{2,3,4,5},{3,4,5,6} };

这个是数组的初始化使用了3个数值列表,每个数值列表都用花括号括起来,第1个列表的数据用于初始化数组的第一行,第2 个列表的数据用于初始化数组的第2 行,以此类推。如果第一个列表中只有2个数,则只会初始化数组第1行的前2个元素,而最后2个元素会被默认初始化为0,。如果某列表中的数值个数超出了数组每行的元素个数,则会出错,但是这并不会影响其他行的初始化。


8、其他多维数组

前面讨论的二维数组的相关内容都适用于三维数组或更多维的数组,可以这样声明一个三维数组:

int box[10][20][30];

可以把一维数组想象成一行数据,把二维数组想象成数据表,把三维数组想象成一叠数据表。


总结

以上就是今天要讲的内容,本文详细介绍了数组的使用,数组使我们处理繁琐的数据更加方便快捷,掌握数组的使用方法也是学习编程语言的重要一步!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值