浅谈C语言数组之一维数组
前言
- 数组是一组有序数据的集合。数组中各数据的排列是有一定规律的。下标代表数据在数组中的序号。
- 数组中的每一个元素都属于同一种数据类型。不能把不同数据类型的数据放在同一个数组中。
怎么定义一维数组
定义一维数组的一般形式为:
类型符 数组名【常量表达式】
例如 : int a[10]; 它表示了一个整型数组a,包含了10个整型元素。
注意:这里的10是表示数组的元素的个数,即数组长度,且不存在a【10】这个说法,这是错误的。数组下标是从0开始,拿这个a数组来说,是从0开始,到9结束,所以不存在a[10]。
常量表达式中也可以包括常量和符号常量,比如int a[3+5] 是合法的,也就是定义了一个长度为8的整型数组a。但是像这种int a[n]是不合法的。为什么呢?因为在c语言中不允许对数组大小进行动态定义,也就是说数组的大小不依赖于程序运行过程中变量的值。举个例子:
int n;
scanf("%d",&n);
int a[n];
定义数组a后,在内存中划出一片存储空间,存放它们。如下所示
a数组
a[0] 、a[1]、a[2]、a[3]、a[4]、a[5]、a[6] 、a[7]、a[8]、a[9]
怎么引用一维数组
在定义数组并对其中各元素赋值后,就可以引用数组中的元素。应注意,只能引用数组元素而不能一次争议调用整个数组全部元素的值。
引用数组元素的表形式为
数组名[下标]
例如,a[0]就是数组a中序号为0的元素,它和一个简单变量的地位和作用相似。下标可以是整型常量和整型表达式。
这么写是合法的:a[0]=a[5]+a[7]-a[2*3]
每一个数组元素都代表一个整数值。
注意:定义数组时用到的数组名【常量表达式】和引用数组元素时用的数组名【下标】形式相同,但是含义不同。
int a[10];
b=a[9];
小试牛刀
例题:对10个数组元素依次赋值为0,1,2,3,4,5,6,7,8,9,要求逆序输出
思路:首先你得先定义一个长度为10的数组,赋值的值是整型,所以,你可以将数组定义为整型,然后用循环进行赋值。最后按下标从大到小循环输出就行。
程序:
#include <stdio.h>
int main(){
int i,a[10];
for(i=0;i<=9;i++)
a[i]=i;
for(i=9;i>=0;i--)
printf("%d",a[i]);
printf("\n");
return 0;
}
运行结果就是 9 8 7 6 5 4 3 2 1 0
1.初始化
为了使程序简洁,常在定义数组的同时给各数组元素赋值,这称为数组的初始化,可以用初始化列表实现数组的初始化。
(1)在定义数组的时对全部数组元素赋予初值。
int a[10]={0,1,2,3,4,5,6,7,8,9};
这就称为初始化列表,它会按照a[0]-a[9]的顺序依次被赋值。
(2)可以给数组的一部分元素赋值,剩下未被赋值的的都会被赋0
int a[10] = {0,1,2 ,3,4};
前五个会被赋初值,而后面的五个全部赋0
(3)如果想使一个数组中的一部分全部为0,可以写成
int a[10] ={0,0,0,0,0,0,0,0,0,0};
或
int a[10]={0};
(4)在对全部数组赋初值时。由于数据的个数已经确定,因此可以不指定数组长度。
例如:int a[5]={1,2,3,4,5};
可以写成
int a[]={1,2,3,4,5};
系统会自动根据花括号里的数据个数确认a数组有5个元素。
但是想定义数组长度为10就不能这么写,必须写成int a[10]={1,2,3,4,5};
注意:凡未被初始化列表指定的初始化的数组元素,系统会自动把它们初始化为0.
2.程序举例
用数组来处理求Fibonacci数列问题
程序:
#include <stdio.h>
int main()
{
int i;
int f[20]={1,1};
for(i=2;i<20;i++)
f[i]=f[i-2]+f[i-1];
for(i=0;i<20;i++){
if(i%5==0) printf("\n");
printf("%12d",f[i]);
}
printf("\n");
return 0;
}
以上就是今天要讲的内容,本文仅仅简单介绍了一维数组的定义与使用,后面会继续讲二维数组和字符数组,敬请期待。
- 点赞
- 收藏
- 关注作者
评论(0)