- 经常用下面的方式定义数组
#define N 10
int a[N];
-
也经常在定义数组的时候就给初值
#define N 10
int a[N]={1,3,5,7,9};
- 给了初值,就可以不写长度,下面默认数组长度是5
#define N 10
int a[]={1,3,5,7,9};
- 定义数组时,[ ]里不能有变量,也不能为实型。
- 使用数组元素时,a[0]~a[9]是合法的数组元素。
- 使用数组元素时,[ ]可以有变量,a[i],而且用的特别多
- 经常要对数组遍历,也就是每个元素访问一遍同时做点什么事儿,打印、求和之类的,用for循环很适合
for(i=0;i<N;i++)/*遍历整个数组,打印每个元素并求元素之和*/
{
printf("%d",a[i]);
sum+=a[i];
}
- C语言对数组元素越界没有约束,比如
#define N 5 int a[N]={1,3,5,7,9};
合法的元素是a[0]~a[4],但是,你可以使用a[5],a[6],甚至a[-1]等这些元素,某些编译器会给警告,但是能运行,这种写法会带来一些问题,因为你引用的元素的空间可能是别的变量的空间,如果对它修改,会引发意想不到的结果。我们称这种现象为数组的越界。我们可以越界,但是越界的带来的错误和后果由程序员承担,C语言不负责。
- 数组名是数组的首地址,也是第一元素a[0]的地址,即a和&a[0]它俩是一样的。
- 首地址是干嘛的呢?因为定义了数组,就要给它分配内存空间,先计算一下要给多少个字节,比如int型,长度10的话,就是40个字节,系统算好字节数之后,找连续的尚未使用的40个字节给数组用,此时,系统里会标注&#