你还躺在宿舍温暖的小床上吗?
还在刷着抖音, 打着游戏吗?
还享受着吃了睡 睡了吃的生活吗?
嘿,大兄dei,该醒醒了啊!
马上就要考试了!
领略过了“分支结构”的复杂
体会过了“循环结构”的魅力
那么现在
让我们一起徜徉在“数组”知识的海洋里吧!
一、一维数组
数组:方便数据的管理和使用,便于完成大量数据的处理,简化程序设计。
1.一维数组定义格式
类型名 数组名 [数组长度]
类型名:数组元素的类型
数组名:数组(变量)的名称,标识符
数组长度:常量表达式,给定数组的大小
例如:int a[10];
定义一个含有10个整型元素的数组a
2. 数组定义引用
先定义,后引用,只能引用单个的数组元素,不能一次引用整个数组
引用数组元素:
数组名[下标]
下标:整型表达式
取值范围:[0,数组长度-1]
例如:int a[10];
表示10个元素:a[0]、a[1]、......a[9]
注意:下标不能越界,不能引用a[10]
3. 一维数组初始化
可以定义数组时,对数组元素赋初值
类型名 数组名 [数组长度] = {初值表};
例如:
int a[10] = {1,2,3,4,5,6,7,8,9,10}
定义数组a有10个int类型的元素,并为这些元素赋初值:a[0]=1, a[1]=2,......a[9]=10
4.一维数组部分元素初始化
一般数组 如果没有初始化,所有元素为随机值;但如果对部分元素初始化,没有初始值的元素自动赋0
int fib[20]={0,1};
fib[0] =0, fib[1]= 1,其余元素为0
如果对全部元素都赋初值,可以省略数组长度int a[10]={0,1,2,3, 4, 5,6, 7,8, 9}
可写成inta[]={0,1,2,3, 4,5, 6,7, 8, 9};
建议不要省略数组长度
是不是觉得很懵?
5.数组作为函数参数
若将一个数组作为实际参数传递给函数,只需不带方括号的数组名即可。
若数组a的定义为: int a[10];
若要将数组a作为实参传递给被调用函数SumArr(),则调用语句可写为: SumArr(a,10);
数组名代表数组首元素的地址。因此数组名做参数就可以将数组的起始地址传递给形参。另外需要将数组元素的个数也传递给被调用函数。
函数SumArr()的函数原型如下:
int SumArr (int b[ ], int n)
表示函数SumArr()期望用形参b来接收一个整型数组,用形参n来接收数组元素个数。
一般变量作参数:传递的是数值,形参的值的改变不影响实参。
数组做参数:传递的是数组的首地址,形参数组和实参数组实质上是同一块内存区域,形参数组发生改变,实参数组也随之发生改变。
好想休息呀!
二、二维数组
1.定义
类型名 数组名 [行数][列数]
例如:int a[3][2];
定义二维数组a,3行2列,6个元素
2.引用
先定义,后引用。
数组元素的引用:
数组名[行下标][列下标]
行下标和列下标:整型表达式
行下标的取值范围是[0,行数-1]
列下标的取值范围是[0,列数-1]
3.二维数组的初始化
编译器会根据初值的个数和数组的列数计算出数组的行数,但建议不要省略
4.二维数组做函数参数
若将一个二维数组作为实际参数传递给函数,只需不带方括号的数组名即可。若数组a的定义为:int a[5][10];
若要将数组a作为实参传递给被调用函数SumArr(),则调用语句可写为: SumArr(a);
因为数组名代表数组首元素的地址,因此数组名做参数就可以将数组的起始地址传递给形参。
声明形参数组时可忽略第一维的长度,如:
int SumArr( int a[5][10] );
int SumArr( int a[][10] );
不能省略除第一维之外的其他维数,因为多维数组在C语言的存储是“先行后列”。
ok,数组到此结束~
【河南工程学院计算机学院】
公众号:河南工程学院计算机学院
邮箱:2925881207@qq.com
微博:河南工程学院计算机团委
抖音:豫工计算机
运营:计算机学院学生会网宣部
编辑:吕诗情
排版:吕诗情
校对:张硕