浅谈C语言数组之一维数组


前言

  1. 数组是一组有序数据的集合。数组中各数据的排列是有一定规律的。下标代表数据在数组中的序号。
  2. 数组中的每一个元素都属于同一种数据类型。不能把不同数据类型的数据放在同一个数组中。

一、怎样定义和引用一维数组?

怎么定义一维数组

定义一维数组的一般形式为:
类型符 数组名【常量表达式

例如 : 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];   //前面有int 说明这是定义数组 包含10个元素 从0开始
b=a[9];      //这里表示引用序号为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;
}

总结

以上就是今天要讲的内容,本文仅仅简单介绍了一维数组的定义与使用,后面会继续讲二维数组和字符数组,敬请期待。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值