数组(Array)
什么是数组?
数组是同类型有序数据的集合
它所包含的每一个数据叫做数组元素(Element),所包含的数据的个数称为数组长度(Length)
数组的内存是连续的
数组中的每一个数据叫做数组元素 Element
,数组中的每个元素都有一个序号,这个序号从 0
开始,称为下标 Index
数组名代表着整个数组的地址,也就是数组的起始地址
一维数组:
注:其实a不算是变量,是个常量,它代表着数组的地址。
数组a的地址是ffc1,a[0]的地址是ffc1,a[1]的地址是ffc3,a[2]的地址是ffc5。所以a == &a[0],即第一个元素的地址就是整个数组的地址
二维数组:
注:a[0]、a[1]也是数组,是一维数组,而且a[0]、a[1]就是数组名,因此a[0]、a[1]就代表着这个一维数组的地址
(1)数组a的地址是ffc1,数组a[0]的地址也是ffc1,即a = a[0];
(2)元素a[0][0]的地址是ffc1,所以数组a[0]的地址和元素a[0][0]的地址相同,即a[0] = &a[0][0];
(3)最终可以得出结论:a = a[0] = &a[0][0],以此类推,可以得出a[1] = &a[1][0]
数组:一维数组、二维数组
一维数组:
一维数组定义:
类型说明符 数组名[数组长度];
例如:
float m[12]; //定义一个长度为 12 的浮点型数组
char ch[9]; //定义一个长度为 9 的字符型数组
数组初始化:
例:
int a[100]={0,,1,2,3,4};
//其元素分别是a[0]~a[99]
//定义一个整形数组a,前5个元素赋值为1,2,3,4,5,剩余的95个元素值默认为0
定义时初始化可以一维数组不定义数组长度
例:
char a[]={"hello world"};
二维数组(多维数组):
二维数组中的元素是通过使用下标(即数组的行索引和列索引)
二维数组定义:
类型说明符 数组名[行数][列数];
例如:
int a[2][3];
定义的结果:
a[0][0], a[0][1], a[0][2], a[0][3]
a[1][0], a[1][1], a[1][2], a[1][3]
a[2][0], a[2][1], a[2][2], a[2][3](可以将二维数组看成一个坐标系,有 x 轴和 y 轴,要想在一个平面中确定一个点,必须同时知道 x 轴和 y 轴)
(行为x轴,列为y轴)
二维数组初始化:
二维数组有两种赋值方式:
一、按行赋值
类型说明符 数组名[行数][列数]={{元素1,,元素2,...,元素n},{元素1,,元素2,...,元素n},{元素1,,元素2,...,元素n},...,{元素1,,元素2,...,元素n}};
例:
按行赋值:
int
a[3][4]={{1,2,3,4},{10,20,30,40},{100,200,300,400}};
//定义一个三行四列的二维数组,按行赋值,{1,2,3,4}是第一行,{10,20,30,40}是第二行,{100,200,300,400}是第三行
二、按个数赋值
类型说明符 数组名[行数][列数]={元素1,元素2元素1,元素3,元素4,元素5,...,元素n};
例:
按个数赋值:
int
a[3][4]={1,2,3,4,10,20,30,40,100,200,300,400};
//定义一个三行四列的二维数组并对其中的12(3*4)个元素进行赋值
结果:a[0][0]=1, a[0][1=2], a[0][2]=3, a[0][3]=4
a[1][0]=4, a[1][1]=10, a[1][2]=20, a[1][3]=40
a[2][0]=100, a[2][1]=200, a[2][2]=, a[2][3]=300int a[3][4] = { {0, 1, 2, 3} , /* 初始化索引号为 0 的行 */
{4, 5, 6, 7} , /* 初始化索引号为 1 的行 */
{8, 9, 10, 11} /* 初始化索引号为 2 的行 */
};
(依次为arry[0][0]~arry[2][3]共12个元素)
注: 如果对二维数组的初始化,那么第一维的长度是可以缺省的,但是第二维不可缺省
int main()
{
int ar[ ][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 }; // 3 行 4 列
int br[ ][4] = { {1,2},{3,4},{5,6} }; // 3 行 4 列 数字不足自动补 0
int cr[ ][4] = { 1,2,3,4,5,6,7,8 }; // 2 行 4 列
return 0;
}
注:一维数组与二维数组中“[ ]”里的表示的是数组的长度(大小),都是从0开始n-1结束
引用:C语言 数组定义和使用 - C语言零基础入门教程_c语言数组_猿说编程的博客-CSDN博客C语言一维数组的定义和使用 - C语言教程 - C语言网 (dotcpp.com)
C语言二维数组的定义和使用 - C语言教程 - C语言网 (dotcpp.com)
C 数组 | 菜鸟教程 (runoob.com)C 语言之二维数组(详细版)_c语言二维数组_WartenSIEl的博客-CSDN博客什么是数组?C语言数组的基本概念 (biancheng.net)C语言必学知识点详解【C语言 - 数组】! - 知乎 (zhihu.com)