1. 一维数组的定义
类型名 数组名[常量表达式]
数组元素的下标从0开始计数,若定义a[4],则数组a中一共有4个元素,分别是a[0],a[1],a[2],a[3]。
因为这些元素可以排列成一列,故称数组是一维的。
int a[4];
char name[10-1];
float x[3],y[5*2];
注意:数组名后面[ ]中是一个常量表达式,其中不允许含有变量。
如:int n=4;
int a[n];
是错误的;
int n;
scanf("%d",&n);
int a[n];
也是错误的。
2. 一维数组的元素构成
比如说a[4],里面含有a[0], a[1], a[2], a[3],这些都是变量。所以一维数组的元素是变量。
3. 数组名的指针类型
数组名代表一个数组类型的对象,在以下三种使用场合,它都代表整个数组。
(1)测试整个数组的空间大小:sizeof(a)
(2)获取整个数组的指针:&a
(3)用字符串对字符数组初始化:char s[ ]="hello";
但除了上面3种场合意外,数组名若出现在其他地方,将不再代表整个数组,而是退化为一个只想数组首元素的指针,比如a+1,*(a-2)等,此时a就被用作一个指向变量a[0]的指针变量。
数组名被用作指针时,是一个指向数组首元素的指针。
4. 数组元素的表示方法
下标法:a[0],a[1],a[2]……
指针法:*a, *(a+1), *(a+2)……
5. 一维数组的引用
引用数组元素注意:
(1)使用数组元素可以用下标法或者指针法,例如a[3]、a[i]、a[2*i-1]、*(a+i+1)……
(2)每次只能使用数组中的一个下标变量。C语言中无法做到一次对两个以上的下标变量进行操作。不管是赋值,还是输入、输出,每次都只能操作其中一个下标变量。
例:把5个数字输入到一个int a[5]的数组中去。
scanf("%d %d %d %d %d",&a[0],&a[1],&a[2],&a[3],&a[4]);
或者:
for(i=0;i<=4;i++)
scanf("%d",a[i]);
(3)使用数组元素时,下标不要越界。
比如说一个int a[5],内含a[0], a[1], a[2], a[3], a[4], 如果在程序中引用了a[5],那么就是越界了。