数组定义和声明初始化
数组在程序中是一块连续的,大小固定并且里面的数据类型一致的内存空间。
1、数组的下标均以0开始;
2、数组在初始化的时候,数组内元素的个数不能大于声明的数组长度;
3、如果采用第一种初始化方式,元素个数小于数组的长度时,多余的数组元素初始化为0;
#include<stdio.h>
int main()
{
/*如下为3中数组初始化的方式*/
/*第一种,数组元素个数小于数组长度时,多余的空间被赋值为0,即arr1[3]为0*/
int arr1[4]={1,2,3};
/*第二种,不规定数组长度,直接赋值*/
int arr2[]={1,2,3};
/*第三种,先规定长度,再一个一个赋值*/
int arr3[4];
arr3[0]=1;
arr3[1]=2;
arr3[2]=3;
arr3[3]=4;
return 0;
}
4、在声明数组后没有进行初始化的时候,静态(static)和外部(extern)类型的数组元素初始化元素为0,自动(auto)类型的数组的元素初始化值不确定。
以下为代码实验证明第四条。
/**********
*author: Yang Xu
*description: extern and static array
********/
#include<stdio.h>
#include<process.h>
/*外部(extern)变量b,和静态(static)外部变量c*/
int b[3];
static int c[3];
void showarray(int a[3])
{
int i;
for(i=0;i<=2;i++)
printf("%d ",a[i]);
printf("\n");
}
int main()
{
/*自动类型的数组a*/
int a[3];
/*打印输出所有元素*/
showarray(a);//自动类型,初始化值不确定
showarray(b);//初始化值为0
showarray(c);//初始化值为0
if(!0)
{
/*静态(static)局部变量d*/
static int d[3];
showarray(d);//初始化值为0
}
system("pause");
return 0;
}
数组的遍历
注意:
1、数组在遍历时一般用到循环遍历,遍历时注意不要越界。在VS2010中,越界之后,编译器不会报错,会出现一些奇怪的值。
2、引用数组时,例如arr[******],括号内不仅仅可以写数字,更可以是各种表达式,只要它们的值符合要求即可。
1、整个数组当作函数参数,即把数组名称传入函数中
2、数组中的元素当作函数参数,即把数组中的参数传入函数中
注意
1、数组名作为函数实参传递时,函数定义处作为接收参数的数组类型形参既可以指定长度也可以不指定长度。
2、数组元素作为函数实参传递时,数组元素类型必须与形参数据类型一致。