数组
一,访问一维数组元素
示例代码:
#include <stdio.h>
#define SIZE 10 /*定义数组长度*/
int main(void)
{
int i ;
int array[SIZE]; /*定义数组变量*/
for( i = 0 ; i < SIZE ; ++i ) /*以索引作为循环变量*/
{
array[i] = i ; /*对数组元素赋值*/
}
for( i = 0 ; i < SIZE ; ++i ) /*以索引作为循环变量*/
{
printf("array[%d] = %d", i , array[i]); /*打印数组*/
}
}
二,初始化一维数组
定义:数组的初始化就是在定义数组变量的同时给数组的元素赋值。主要有一下三种形式:
1,
数组类型 数组名 【N】= {值0,值1,值2, … …值(N-1)};
同时,初始化的数值序列不能大于数组容量(长度)。例如:
int year[4] = {365,366,365,365,365};
由于将5个数值赋值给只能保存个元素的数组变量,所以编译期自动报错:太多初始值。
2,
数据类型 数组名 【N】= {值0,值1,值2,… …值n};
其中,数组的第0到第n个元素会被依次初始化为值0到值n,剩下的元素会被自动初始化为0,例如:
int door【6】= {1,2,3};
初始化结果为 door[0] = 1,door[1] = 2,door[2] = 3,door[3] = 0 door[4] = 0 door[5] = 0
需要注意的是被初始化的数组元素部分必须是数组中从第0个元素开始的连续序列。例如:以下初始化语句是错误的:
int windows[6] = {1, ,3,4,5}; /第1个元素未赋值/
int windows[6] = { , ,3}; /第0个和第1个元素未赋值/
大部分的时候,初始化的值并无特殊意义,只是为了防止出现意外的值。
3,
初始化数组时,还可以在定义中不给出容量大小,即让容量大小由初始化值序列的个数决定。
数据类型 数组名称【 】= {值0,值1,值2,… …值n};
编译器会把初始化序列中的值个数作为数组的个数,并将序列值依次赋值给数组元素。
看以下代码:
#include <stdio.h>
#define SIZE 5
int main(void)
{
int i = 0 ;
const int age[ ] = {21,30,24,31,26,};
const char rank [SIZE] = { ' A ' , ' B ' , ' D ' ,};
const double average [SIZE] = {0.0};
/*打印数组*/
for( i = 0 ; i < SIZE ; ++i )
{
printf("age [%d] = %d\t",\
"rank [%c] = %c\t",\
"average [%lf] = %lf\t",\
i ,age [i], i ,rank [i], i ,average [i]);
}
retuen 0;
}
代码解析:(1)定义并初始化数组average。对average初始化序列只包含一个浮点型数值,其剩余元素将被编译器自动赋值为0.0。
(2)使用循环将三个数组的内容输出。其中,’'为连接符,将分开的几行处理为一行。