1,定义数组
(1)普通定义
<类型>变量名称[元素数量]
int grade[100]
double a[20]
(1)元素数量
(2)集成初始化定义
a={1,2,3,4,5,8,9,} //最后一个逗号无影响
数组大小编译器自己计算
a[4]={1} // [1,0,0,0]
给定数组大小,其余部分补0
2,数组特点
(1)所有元素类型相同
(2)数组被定义后,大小不能更改
(3)下标从0开始,最大下标为 ‘元素数量-1’
(4)字符可以作下标,ASCII码是数字 a['K']=1
(5)[ ]内是 常量或符合常量
int a[0]; //可以创建数量为0的数组,但没有什么卵用
3,数组大小计算
sizeof:给出整个数组所占据的内容大小。 单位:字节
sizeof(a)/sizeof(a[0])
//a是数组变量,先求出整个数组大小,再求出单个元素大小。相除即可
4,数组赋值
//a是数组变量
int b[]=a (X)
(1)数组本身不能被赋值 (2)一个数组不能把所有元素交给另一个数组,需遍历
5,遍历易错点
(1)小于等于数组本身大小
(2)离开循环后,仍使用循环变量作为数组下标
6,函数
//a是数组变量
形参(int a[],int length)
实参(a,sizeof(a)/sizeof(a[0]))
(1)数组做参数时,不能在[ ]中给出大小(以后解释)
(2)数组做参数时,不能利用sizeof计算大小(以后解释)
7,静态和动态数组
static int b[5]={1,2,3}
//只对前三个元素赋值,其余为0
int a[5]={1,2,3}
//只对前三个元素赋值,其余为不确定
8,二维数组、
(1)定义
类型名 数组名 [行长度][列长度]
a[i,j] 等价于 a[ j ]
(2)初始化
1.分行赋初值
类型名 数组名 [ 行长度 ][ 列长度 ]={ {初值表1},{初值表2},{初值表3}...... }
int a[2][2]={{1,2},{3,4}}
[1,2
3,4]
static int a[3][3]={{1,2,3},{},{4,5,6}}
[1,2,3
0,0,0
4,5,6] 空缺处补0
int a[ ][列长度]={ {初值表1},{初值表2},{初值表3}...... }
行数编译器会自动算出,列数必须写上
2.顺序赋初值
类型名 数组名 [ 行长度 ][ 列长度 ]={ 初值表 }
//按顺序把值赋予数组里面
int a[2][2]={1,2,3,4}
9,其他
1. int N=5, b[N][N]; 定义是正确的
2.假定int类型变量占用两个字节,其有定义:int x[10]={0, 2, 4}; 则数组x在内存中所占字节数是(D)
A.6
B.3
C.10
D.20
定义了10个整形大小。所以 是10*2.