• 009-数组-C语言笔记


    009-数组-C语言笔记

    学习目标

    1.【掌握】数组的声明

    2.【掌握】数组元素的赋值和调用

    3.【掌握】数组的初始化

    4.【掌握】数组的遍历

    5.【掌握】数组在内存中的存储

    6.【掌握】数组长度计算

    7.【掌握】数组的常见应用

    8.【掌握】数组作为函数的参数

    一、数组的声明

    作用:

    可以存储指定数据类型指定个数的数据,数组与我们之前学习的变量最大的不同就是我们之前的变量只能存储一个数据,而我们的数组可以存储多个数据。

    特点:

    1.可以存储多个数据

    2.虽然数组可以存储多个数据,但是并不是什么类型的数据都可以存储的。要求存储在数组中的数据的类型要一致,在创建数组的时候指定可以存储的多个数据的类型。

    3.虽然数组可以存储多个数据,但不是任意个都能直接往里面存储的,数组之中可以存储的数据的个数是固定的,也是在创建数组的时候指定的,一旦指定,不能改变。

    4.存储在数组之中的数据非常方便管理,拿到数组就可以很方便的拿到数组之中的数据

    术语:

    1.元素:数组中的每一个小空间,就叫做数组的元素。

    2.下标/索引:数组之中有很多元素,为了区分每一个元素,C语言就为每一个元素编了一个号,这个号就叫这个元素的下标/索引。下标/索引从0开始递增。

    3.长度:元素的个数。

    语法:数组元素的数据类型 数组名[数组长度];

    注意:

    1.声明数组的时候必须要指定数组的长度!

    2.数组的长度可以为0,表示一个数据都不能存储,数组长度也可以为1,表示只能存储一个数据,但长度不能给负数和小数。

    3.数组长度可以是常量,变量,宏,表达式。但是长度一旦声明,长度就不能改了。

    4.当数组长度为变量的时候,是不能在声明数组的同时为数组元素初始化值的。只能先声明数组,然后再为元素赋值。

    二、数组元素的赋值和调用

    数组真正用来存储数据的是数组中的元素,而不是数组本身,数组指的是整个数组,所以我们不能直接为数组赋值。所以我们应该将数据赋值给数组中的元素。数组之中有多个元素,元素的本质其实就是一个普通类型的变量。那我们如何确定是为哪个元素赋值呢?

    赋值语法:数组名[元素的下标] = 数据;

    调用语法:数组名[元素下标];

     

    三、数组的初始化

    在声明数组的同时就初始化数组之中的每一个元素的值。

    注意:

    在声明数组的时候初始化元素,如果元素个数使用变量,就不能初始化。在编译的时候,编译器是不知道数组的长度的,所以没法初始化。

     

    四、数组的遍历

     

     

    五、数组在内存中的存储

    111111111111111

    数组其实就是由指定个数的连续的变量组合成的,存储方式和普通变量存储方式相同,把每一个元素当做一个普通变量。分配内存空间的时候,只是分配多个连续空间分别存储每个元素,而且也是从高地址向低地址连续分配的。每个元素的地址,就是他占用字节的最低字节的地址。

    数组的地址:数组之中第1个元素的地址,就是数组的地址。也就是下标为0的元素的地址。

    六、数组长度计算

    sizeof(数组名)计算出这个数组在内存中占用的总字节数。

    sizeof(数据类型)计算出每个元素在内存中占用的字节数。

    元素个数 = sizeof(数组名)/sizeof(数据类型);

     

    七、数组的常见应用

    1.求最大值

    2.求最小值

    3.求累加和

    4.求平均值

    5.查找数组是否包含指定元素

    6.查找指定元素在数组中第一次出现的下标

    7.选择排序

    双色球案例练习:

     

    八、数组作为函数的参数

    如果函数的形参是一个数组,在调用这个函数的时候,也必须要为这个函数传入一个相同类型的数组,并且是传入数组的地址。然后函数操作的就是我们传进去那个数组,改变数组中的元素,也就是改变传入的那个数组的元素。

    注意:当数组作为函数的参数的时候,传入的是数组的地址,一个地址占据8个字节。但一个数组如果占据的内存大于8字节,将不能在函数里通过sizeof计算数组的长度。而且函数里的形参是去内存中申请8个字节存储指针变量,并将传入的数组地址赋值给这个指针变量。

    我们会发现函数中打印的数组地址和我们声明的数组的地址是一致的

  • 相关阅读:
    「JSOI2019」节日庆典
    「CTSC2017」网络
    数学杂谈 #6
    「WTF」铁锅乱炖比赛篇
    「LOJ6538」烷基计数 加强版 加强版
    「ZJOI2015」地震后的幻想乡
    「ZJOI2010」贪吃的老鼠
    「CF1290F」Making Shapes
    「WTF」铁锅乱炖算法篇
    「AGC031E」Snuke the Phantom Thief
  • 原文地址:https://www.cnblogs.com/luolianxi/p/4990214.html
Copyright © 2020-2023  润新知