• C语言入门 Day_12 一维数组


    目录

    前言

    1.创建一维数组

    2.使用一维数组

    3.易错点

    4.思维导图


    前言

    存储一个数据的时候我们可以使用变量, 比如这里我们定义一个记录语文考试分数的变量chinese_score,并给它赋值一个浮点数(float)。

    1. float chinese_scoer=98.0;
    2. printf("语文考试分数是%f\n",chinese_scoer);

    假如我们需要记录多个类似的数据,比如这里记录语文数学英语物理化学生物这6科考试的分数,我们就需要6个变量,这样的话就有点麻烦

    假设我们要记录100个数据呢?全用变量的话一来变量名很多,二来代码也会很冗长,这时候我们就需要一些新的机制

    1. float chinese_score = 98.0;
    2. float math_score = 96.0;
    3. float english_score = 90.0;
    4. float physics_score = 88.0;
    5. float chemistry_score = 87.0;
    6. float organism_score = 81.0;

    这里我们就要介绍一个新的存储方式——数组,

    它可以一次性存储多个相同类型的数据。

    如果变量就像一个盒子的话,一次可以存储一个数据;

    那么数组就像一个抽屉,可以存储多个数据。

    1.创建一维数组

    1.1

    我们创建一个有六个元素的浮点型数组用来存储成绩:

    1. float exam_score[6]={98.0,96.0,90.0,88.0,87.0,81.0};

    1. 数组的数据类型,float浮点型

    2. 数组名,exam_score

    3. 数组的长度是6,也就是能容纳6个数据

    4. 方括号,里面写的是数组的长度

    1. float exam_score[6]={98.0,96.0,90.0,88.0,87.0,81.0};

    5.赋值符号 =

    6.数组的六个元素,都是浮点型

    7.数组的元素,需要用花括号括起来

    8.数组中的元素用逗号,隔开

    1.2

    上面我们完成了数组的初始化工作,创建了一个浮点数的数组,它里面存储了六个值。我们把这些值叫做数组的元素

    数组的命名规则和变量是一致的,由大小写字母,数字和下划线组成,不能由数字开头

    同时,我们不仅能创建浮点数的数组,之前学过的所有数据类型的数组都可以创建,只不过需要注意的是,完成创建以后,所有数组的元素都是这个类型的。

    例如:

    1. int student_age[3]={18,19,21};

    1.我们创建一个有三个元素的整型数组student_age,并进行赋值:

    2.然后输入数组名字student_age:

    3.填入数组的长度[3],注意使用英文的方括号[]:

    1. int student_age[3]={18,19,21};

    4.填入赋值符号= :

    5.填入数组元素的花括号{}

    6.填入分隔数组元素的逗号, :

    1.3

    完成了数组的创建/定义之后,我们就可以使用里面的数据元素了,这里的使用包括了读取修改

    创建一维数组就像是做好了一个抽屉,并在抽屉中放好了东西(数据);

    使用一维数组就是在这个抽屉中取出东西(数据),或者在抽屉的每个格子里面放入不同的东西(数据)。

    2.使用一维数组

    2.1

    数组中的元素存储是有序的,

    有序的意思就是数组元素是按照顺序一个一个排好的

    他们都有固定的位置,方便查找和修改

    下列代码就会输出1,2,3,因为我们依次打印了这个数组的第一个元素,第二个元素,第三个元素:

    1. int int_list[3]={1,2,3};
    2. printf("%d\n",int_list[0]);
    3. printf("%d\n",int_list[1]);
    4. printf("%d\n",int_list[2]);

    1.创建了一个有三个元素的整型数组

    2.打印数组里面的第一个元素   printf("%d\n", int_list[0])

    3 数组里面的第一个元素  int_list[0]

    1. int int_list[3]={1,2,3};
    2. printf("%d\n",int_list[0]);
    3. printf("%d\n",int_list[1]);
    4. printf("%d\n",int_list[2]);

    4.数组元素的位置,也是用方括号+数字表示   [0]

    5.打印数组里面的第二个元素 printf("%d\n", int_list[1]);

    6.打印数组里面的第三个元素  printf("%d\n", int_list[2]);

    2.2

    这种有序的数据结构又叫做线性表,也就是说每个元素都像一根线一样一一排列的。我们可以通过索引/下标的方式来访问数组中的元素。

    2.3

    我们来看看数组里面的下标,也就是方括号里面的数字

    1. int int_list[3]=[1,2,3];
    2. printf("%d\n",int_list[0]);
    3. printf("%d\n",int_list[1]);
    4. printf("%d\n",int_list[2]);

    1. 方括号里面是3,表明这个数组的长度是3

    2.  打印第一个元素,下标是0

    3.   打印第二个元素,下标是1

    4.   打印第三个元素,下标是2

    2.4

    我们可以注意到,在使用数组的时候,我们下标是从0开始的,比如第一个元素是int_list[0]

    这是由一个C语言内在的机制决定的,因为第一个元素是在线性表的头部,所以它的位置和线性表的开头位置是重合的;

    因此我们增加0的位置就能访问这个元素了,因为第一个元素就在开头。

    而访问第二个元素的时候,我们需要越过第一个元素,这时候需要+1,因此第二个元素的下标是1。

    2.5

    比较有意思的是,从C语言开始,后面所有的编程语言在类似数组这样线性表的结构里面,都使用0来表示第一个元素。

    所以久而久之这也成了程序员的一个梗,第一个数不是1,是0

    例如:

    1. char char_list[5]={'p','a','p','e','r'};
    2. printf("%c\n",char_list[0]);
    3. printf("%c\n",char_list[1]);
    4. printf("%c\n",char_list[2]);
    5. printf("%c\n",char_list[3]);
    6. printf("%c\n",char_list[4});

    输出结果

    1. papper

    1.我们定义一个字符数组并赋值,然后打印输出它,填入第一个下标0:

    2.填入第二个下标和方括号[1],需要注意的是,由于没有换行符/n,所以这五个字符字母是在同一排输出的:

    2.6

    除了访问数组的元素以外,我们还可以修改数组的元素,因为数组的元素也和变量一样,可以重新赋值和修改。

    创建一个数组并初始化赋值1,0,2,4,然后修改这个数组的元素,赋值1,1,1,1:

    1. int int_list[4]={1,0,2,4};
    2. int int_list[1]={1};
    3. int int_list[2]={1};
    4. int int_list[3]={1};

    1.定义一个整型数组,赋值1,0,2,4

    2.给第二个数组元素赋值1,因为第一个数组元素就是1,无需修改

    3.给第三个数组元素赋值1

    4.给第四个数组元素赋值1

    2.7

    既然是个线性结构,我们就不能超出这个这个线性表的长度,比如一个数组长度是‘3’,我们可使用的范围就是0到2

    超出这个范围就属于越界”,程序会报错

    3.易错点

    如图 

    方括号[]中常量表达式表示数组元素的个数;

    数组元素的索引是从0开始的;

    数组大小必须是大于0的正整数

    4.思维导图

    最后我想说的是:

    在撰写这篇文章时,我参考了《白纸编程》这个app的观点和思想,我要感谢他们对我的启发和帮助。

  • 相关阅读:
    计算机网络 ——TCP/IP 基础
    [TQLCTF 2022]simple_bypass
    这5款鲜为人知的电脑软件值得你去尝试
    Ae:内容识别填充面板
    JMeter—(二)如何做接口测试入门篇
    gRPC 提供接口文档
    非DBA人员从零到一,MySQL InnoDB数据库调优之路(三)-分区表与分库分表
    CVPR2023优秀论文 | AIGC伪造图像鉴别算法泛化性缺失问题分析
    【油猴脚本】00006 案例 Tampermonkey油猴脚本自定义表格列名称,自定义表格表头,自定义表格的thead里的td
    微服务开发平台 Spring Cloud Blade 部署实践
  • 原文地址:https://blog.csdn.net/fantastic_little/article/details/132346394