数组
一次性声明多个同类型的变量
(1)声明 定义 数组
数据类型 数组名[数组长度];
声明定义一个数组,且相当于声明了 数组长度 个同类型变量
int scores[10];
scores[0] scores[1] scores[2] … scores[9] 这10个int类型变量

通过数组声明的变量同名,为了区分这些变量需要通过下标来访问这些变量
访问数组元素:
数组名[下标];
下标:
从0开始到数组长度减1

		!!!注意:下标是从0开始,且最大值不能取到数组长度
			数组下标不能越界
			数组越界访问可能造成逻辑错误 也可以访问错误的数组
			最严重的后果是程序崩溃
		下标是从0开始且连续,所以很多时候都会结果循环使用

	输入10个整数,逆序输出这10个整数

(2) 数组初始化
数组类型 数组名[数组长度];
数组元素全部都是随机值(垃圾值)

数据类型 数组名[数组长度] = {元素,…}; 形式进行初始化

	(i) 数组长度 和 元素个数正好相等
		int arr[5] = {1,2,3,4,5};
	(ii) 元素个数 多于 数组长度   编译有警告
		int brr[5] = {1,2,3,4,5,6,7,8}
	(iii) 元素个数 小于 数组长度    后面初始化为0
		int crr[5] = {1,2};
		数据类型 数组名[数组长度] = {"零"};
	(iv) 元素个数为0  但是有 {}
		全部初始化为0   不建议使用

	(v) 不指定数组长度   必须进行初始化  数组长度由初始化元素的个数决定
		int err[] = {元素,...};

	(o) 指定初始化  没有指定的元素初始化为0
		int frr[10] = {[2]=1,[5]=2,[9]=10};

(3)数组的使用
当数组定义之后 不可以直接使用数组进行访问数组元素 或者 对数组元素进行赋值操作 只能通过下标
每一个下标对应一个元素
注意不能直接对数组名 进行 整体赋值操作 !!!!
!!!!数组名是右值

	int i=0;
	for(i=0;i<数组长度;i++){
		数组名[i];
	}

可变长数组

	数据类型 数组名[变量];
	int n = 0;
	scanf("%d",&n);
	int arr[n];
	注意: 可变长数组不能直接初始化  不能 = {}这种形式初始化
	必须用循环的形式进行初始化
	for(i=0;i<n;i++){
		arr[i] = 0;
	}

一维数组

二维数组
(1)声明定义
数据类型 数组名[二维长度][一维长度];
相当于总共声明了 f二维长度*一维长度 个变量
int arr[4,7];//错误的
int arr[4][7];

(2)二维数组元素
下标确定唯一元素
需要两个维度的下标 下标的取值 都是从0开始到数组长度-1

	int arr[4][7];
	arr[0-3][0-6]

(3)二维数组初始化
数据类型 数组名[二维长度][一维长度]; 数组里的元素都是随机值(垃圾值)

	(i)
	={{1,2,3},{4,5,6},{7,8,9},...}
	={{1,2,3}}
	={{0}}
	={0}
	={1,2,3,....}
	={[i][j]=x,...}

遍历数组元素

	int i=0,j=0;
	for(i=0;i<二维数组长度;i++){
		for(j=0;j<一维数组长度;j++){
			arr[i][j];
		}
	}

sizeof
sizeof(数组名) 求得数据所占内存大小 单位字节
sizeof(数组名)/sizeof(数组名[0]) 求得数组长度

二维数组
sizeof(数组名)/sizeof(数组名[0])   二维数组二维的长度(行)
sizeof(数组名[0])/sizeof(数组名[0][0])  二维数组中的一维长度(列)
07-24 06:41