5.C语言-数组
2016-12-26 本文已影响0人
后备干部
1. 初始化需要注意的地方:
- C语言不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值。例如,下面这样定义数组是不行的:
int n;
scanf("%d″,&n); /*在程序中临时输入数组的大小 */
int a[n];
-
float a[0];
/* 数组大小为0没有意义 */ -
int k, a[k];
/* 不能用变量说明数组大小*/ - 数组初始化赋值是指在数组定义时给数组元素赋予初值。数组初始化是在编译阶段进行的。这样将减少运行时间,提高效率。
- 可以只给一部分元素赋值。例如:
int a[10]= {0,1,2,3,4};
定义a数组有10个元素,但花括弧内只提供5个初值,这表示只给前面5个元素赋初值,后5个元素值为0。 - 如果想使一个数组中全部元素值为0,
可以写成
int a[10]={0,0,0,0,0,0,0,0,0,0};
或
int a[10]={0};
- 如果想使一个数组中全部元素值为0,
可以写成
int a[10]={0,0,0,0,0,0,0,0,0,0};
或
int a[10]={0};
注意:int a[10] = {2};
全部元素为{2, 0, 0, 0, 0, 0, 0, 0, 0, 0} - 在对全部数组元素赋初值时,由于数据的个数已经确定,因此可以不指定数组长度。
例如:int a[5]= {1,2,3,4,5};
也可以写成:int a[ ]= {1,2,3,4,5};
2. 二维数组
2.1 定义
QQ20161227-0.png2.2 初始化
我们有4种方法对二维数组初始化:
(1)直接分行给二维数组赋初值(强烈推荐)
int a[3][4] = {{1,2,3,4}, {5,6,7,8}, {9,10,11,12}};
(2)可以将所有数据写在一个花括弧内,按数组排列的顺序对各元素赋初值
int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
(3)可以对部分元素赋初值
int a[3][4] = {{1}, {5}, {9}};
也可以对各行中的某一元素赋初值
int a[3][4] = {{1}, {0, 6}, {0, 0, 11}};
其实也可以只对某几行元素赋初值
int a[3][4] = {{1}, {5, 6}};
(4)如果对全部元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省
int a[][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
在定义时也可以只对部分元素赋初值而省略第一维的长度,但应分行赋初值
int a[][4] = {{0, 0, 3}, {}, {0, 10}};