数组
一次性声明多个同范例的变量
(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
一维数组
二维数组
(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]) 二维数组中的一维长度(列)
! |