☰
数组的初步认识
2026/10/15 3:35:42 网站建设 项目流程

1.概念

C语言中数组是一组相同类型元素的集合

由此可知,数组中存放的是一个或者多个数据,数组元素个数不能为零,且存放的数据类型是相同的。

2.创建与初始化

(1)创建

type name[常量值]

type为数组中存放数据的类型,name为数组的名字

例如:char ch[8]; double score[10];

存放在数组的值为数组的元素,在创建数组时可以指定数组的类型和大小

(2)初始化

数组的初始化一般用大括号,将数据放在大括号中

初始化分为完全初始化和不完全初始化,例如:

完全初始化:int a1[5]={1,2,3,4,5};

不完全初始化:int a1[5]={1};

3.数组的使用

(1)下标:

C语言规定数组是有下标的,从0开始,假设有n个元素,最后一个下标的元素就是n-1.

下标引用操作符[]可以帮助我们访问数组的元素,例如a1[3]

(2)数组的打印:

数组在使用时不需要取地址,但数组的元素需要,例如scanf("%d", &arr[i]);

注:%p是用来打印地址的

(3)在内存中的存储:

数组在内存中是连续存放的

tips:sizeof计算数组元素的个数

sizeof可以计算类型或者变量大小,数组中的元素类型都是相同的,只需要计算出一个元素所占字节的个数,再拿数组所占空间的总大小去除以即可得到结果。

例如:int sz = sizeof(arr)/sizeof(arr[0]);

4.二维数组

(1)二维数组的概念:

若把一维数组做为数组的元素,这时候就为二维数组,三维数组同理

(2)二维数组的创建:

type name[常量值1][常量值2]

例如:

int arr[3][5];

其中int为数组每个元素的类型
3表示3行,5表示5列
arr为数组名
(3)二维数组的初始化:
也分为不完全初始化和完全初始化,例如:

不完全初始化:

int arr1[3][5] = {1, 2};
int arr2[3][5] = {0};
完全初始化:
int arr3[3][5] = {1,2,3,4,5, 2,3,4,5,6, 3,4,5,6,7};
但这样并不能按照行初始化,十分的不方便,故还可以按照行初始化,
例如:
int arr4[3][5] = {{1,2},{3,4},{5,6}};
注:初始化行可以省略,但不能省略列
(4)下标,输入输出,存储
本质上和一维数组区别不大
下标:arr[2][4]
输入:scanf("%d", &arr[i][j]);
输出:printf("%d ", arr[i][j]);
存储:二维数组中的每个元素都是连续存放的
5.C99中的变长数组
C语言在创建数组的时候,数组大小的指定只能使用常量或其表达式,这样的限制,在我们创建数组的时候不够灵活。
但C99中的变长数组允许我们可以使用变量来指定数组的大小

例如:

int n = a + b;
int arr[n]
但变长数组不能初始化,且若想在vs中使用,需要下载Clang工具
6.二分查找
对于一个升序的数组要查找数字n,最简单的办法是遍历,但其缺点是效率很低,故选着查用二分查找,直接找中间的是数字。例如1-300,要找一个数字,第一个猜的一定是150
且二分查找的效率很高,若2的n次方恰好大于要找的数的范围,则最多只需要找n次
tips:求中间元素的下标。可采用mid = (left + right) / 2,避免范围过大时程序出错

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询