数组
数组
1.一维数组的定义,初始化和引用。
2.程序举例
在程序
中,把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。,类似在数学中我们学到过的集合,在C语言中,数组属于构造数据类型。
一. 一维数组的定义
定义: 数组是有序数据(必须是相同的数据类型结构)的集合.
: 类型说明符 数组名[常量
达式]
例如: int a[10] ; 表示数组名为a,有10个元素,并且每个元素的类型都是int型的.
float b[10],c[5]; 说明实型数组b有10个元素,实型数组有5个元素;
注意:
1. 数组名的命名规则和标示符的命名规则相同。
2.常量表达式要有方括号括起来,不能用圆括号,int a(10);
这是非法的!
3.常量表达式表示数组元素的个数,即数组长度.并且数组的第一个元素是从下标0开始的!
4.常量表达式可以是常量也可以是符号常量,不能包含变量。C99以前版本不允许以下定义
例如:下面是非法的
int n;
scanf(“%d”,&n);
int a[n];
但是在mac 终端及xcode 环境下允许此类写法.
5.数组的类型实际上就是指数组元素的取值类型,对于同一数组,它所有元素的数据类型都是相同的;
6.数组名不能与其他变量名相同;例如:
main()
{
int a;
float a[10];
„„„..
} 是非法的!
7.允许在同一个类型说明中,说明多个数组和多个变量;
例如: int a,b,c,d[10],e[5];
二. 一维数组元素的初始化
有下列方法初始化:
1)在定义数组时,对数组元素赋初值;
例如: int a[10]={0,1,2,3,4,5,6,7,8,9};
上面的语句等价于
a[0]=0,a[1]=1,
2)可以只给一部分元素赋初值,例如:
int a[10]={0,1,2,3,4};
表示只给数组的前5个元素赋初值,后5 个元素的值,系统自动默认为0
3)在对全部数组元素赋初值时,可以不指定数组长度;
例如:
int a[5]={0,1,2,3,4};
可以改写为: int a[]={0,1,2,3,4};
其中在数组中各个元素其实就相当于一个变量,也有自已的空间大小,可以用sizeof运算符得到与声明数组类型一致的空间大小;
例如 int a[3] = {1,2,3};
可以用 printf(“%ld”,sizeof(a[0]) )得到第0个元素占的空间字节数;
而且整个数组能够存放多少个元素呢?
Printf(“%ld”,sizeof(a) / sizeof(a[0]));
三. 一维数组的引用
数组必须先定义,后使用!
C语言规定: 只能逐个引用数组元素,而不能一次引用整个数组!
数组的引用形式为: 数组名[下标] 其中,下标可以是整型常量也可以是整型表达式.
例如: a[0]=a[5]+a[7]+a[2*3]
printf(“%d”,a);此写法错误,也就是说,数组可整体声明,但只能单个访问.
四. 一维数组的程序举例
数组元素的添加与删除
1.删除指定元素
#include
int main(void)
{
int a[5] = {1,2,3,4,5}; //现在删除a[0]元素
//整个算法元素向左移动
// a[0] = a[1];
//a[1] = a[2];
// 一直到int a[4] = {2,3,4,5};
int i; //代替下标
for(i = 0; i< 4;i++)
{
}
for(i = 0; i< 4;i++)
printf(“%d”,a[i]);
return 0;
}
当然,实现元素反复赋值有很多方法,这也就体现面向过程的思想算法。最后,祝大家实现自已的程序员梦想。 a[i] = a[i +1];//为什么I < 4;在这个地方就是要防止越界;