下面介绍一下关于数组的一些说明:
- 在数组声明时必须定义数组长度,但也可利用空的方括弧[]对数组初始化,使编译器自动根据列表中的值自动计算数组长度。 例:
int array[12];
int array[]={1,2} //
但是若数组声明的方式是这样的:
int array[12] = {1,2} //其余未被声明的会初始化为0
即:如果不初始化数组,数组元素和未初始化的普通变量一样,其中存储的是无用的数组;但若部分初始化数组,为初始化的元素则被设置为0.
2. C不支持把数组作为一个整体来进行赋值,也不支持用花括号括起来的列表形式进行赋值(初始化的时候除外) 例:
#define SIZE 5 int main(void) { int oxen[SIZE] = {1,2,3,4} //这里可以 int yaks[SIZE]; yaks = oxen; //不可以 yaks[SIZE] = oxen[SIZE]; //不正确 yaks[SIZE] = {4,5,5,7}; //不起作用 }
3.二维数组初始化
int rain[3][3] = { {1,2},
{3,4,5}, //用这种方式初始化相当于 1,2,0,3,4,5,1,0,0
{1}
}
或
int rain[3][3] = {1,2,3,4} //用这种方式初始化相当于1,2,3,4,0,0,0,0,0
4.关于数组名
int array[12];
以这种方式声明数组时,数组名其实是数组第一个元素的地址即与&array[0]等价,也就是说array是一个地址常量。可以用array +1 表示数组中第二个元素的地址,但不能用++array形式,因为++后面只能接变量而不能接常量。
5.array[1] 和*(ar +1 )是等价的,而且不管ar是一个数组名还是一个指针变量,这两个表达式都可以工作。