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

运气男孩 发表于 2021/05/28 23:31:07 2021/05/28
【摘要】 前言数组是一组有序数据的集合。数组中各数据的排列是有一定规律的。下标代表数据在数组中的序号。数组中的每一个元素都属于同一种数据类型。不能把不同数据类型的数据放在同一个数组中。 怎么定义一维数组定义一维数组的一般形式为:类型符 数组名【常量表达式】例如 : int a[10]; 它表示了一个整型数组a,包含了10个整型元素。注意:这里的10是表示数组的元素的个数,即数组长度,且不存在a【10...

前言

  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];   
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;
}

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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。