二.C语言数组

    目标:

   对于数组这一块,我们要理解它的概念,语法,以及如何使用。 

 1.数组的概念和语法

         概念:数组是一组相同类型元素的集合

         注意:数组中存放的是1个或多个数据,但不能是0个,且这些数据类型相同

                  (我们可以跟高中数学中的集合类比,但C语言  数组不能是“空集”

        语法:(我们一般会用到一维数组和二维数组)

        一维数组:

                           type   arr_name[常量值]

        二维数组:

                           type   arr_name[常量值][常量值]

   type:

              数组类型

     一般是:char(字符)   short(短整型)

                  int(整型)  float (浮点型(小数))

   arr_name:

             数组名的名字,这个如何命名根据实际情况,有意义就行.

   [  ]:

            下标引用操作符,其中的常量值是用来定义数组大小的,也是根据实际情况
​​​​​​

    提醒  短整型整型的区别:它们的存储大小和表示范围不同

            1.存储大小short  类型通常占用两个字节

                                 int   类型通常占用四个字节

            2.表示范围:short  范围一般是 -32,768 到 32,767

                                 int   范围一般是 -2,147,483,648到 2,147,483,647

                   (初学者对此不用了解太多,具体情况具体分析)

       下面举几个理解强化我们的理解

         1. int  math  [20] ;           →   存储二十个整型数据

         2.  char  ch[8] ;               →   存储八个字符

         3. double  score[10] ;     →   存储十个高精度浮点数

2.数组的初始化和使用(重)

      存放数据的目的是对它们进行操作,那我们如何操作数组呢?

    2.1一维数组

          一维数组初始化

完全初始化

int  arr [ 5 ]  =  {1,2,3,4,5};

不完全初始化

int arr2 [ 6 ] = {1 }  ; //第⼀个元素初始化为1,剩余的元素默认初始化为0

注意,下面是错误的初始化

 int arr3 [ 3 ] = {1, 2, 3, 4};   →初始化项太多

           一维数组的下标

           C语言规定数组是有下标的,下标从 0 开始,假设数组有 n 个元素,那么最后一个元素下标就是 n-1 . 

           例如:

       1.int arr [10] ={ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 };

        

      实际操作一下:

         那么如何打印一维数组全部内容

         我们可以 使用 for 循环产生 0~9 的下标就可以了。

                  

     当然我们可以根据实际需求给数组输入自己想要的数据

            

        在 第 22 行代码 中,尽管我们赋予了数组中十个数的值,但我们是通过  scanf  让用户输入值来覆盖我们初始化的值

     2.2二维数组 

        如果我们把一维数组作为数组的元素,这时候就是二维数组,同样的,把二维数组作为元素,这时候就是三维数组,这些都是多维数组

          根据最开始讲的二维数组语法我举几个例子帮大家理解 :

      1. int  arr [ 2 ] [ 4 ] ;

     解释:

        2 表示数组有两行

        4 表示每行有五个数据

        二维数组的初始化

         跟一维数组一样,给定一些初始值,叫做初始化

            我们要知道→     type   arr_name[行][列]

完全初始化

int arr [ 3 ][ 5 ] =  {1,2,3,4,5 ,  2,3,4,5,6 ,  3,4,5,6,7};

  

按照行初始化

int arr [ 3 ][ 5 ] = { { 1 , 2 } , { 3 , 4 } , { 5 , 6 } } ; 

注意,在初始化时我们可以省略,但不能省略

    即上面数组可以写为 int arr [   ][ 5 ] = { { 1 , 2 } , { 3 , 4 } , { 5 , 6 } } ; 

       二维数组的下标

        其实二维数组下标平面坐标系的坐标一样,需要确定行和列(x和y)

        同样的,我们可以从上面几幅图看到,二维数组的行和列的下标也都是从 0 开始的,如何定位如下(参考上两幅图):


如何打印二维数组的全部内容

 此时我们要控制 两个for循环,一个产生 ,一个产生 行,

具体如下

    

3.C99中的变长数组

 在C99标准之前,我们创建数组的时候,数组大小的指定只能使用常量或常量表达式

 这样的语法让我们创建数组不够灵活

于是人们在C99中加了一个变长数组(variable-length array,简称 VLA),即可以使用变量指定数组大小

int n =a+b;

int  arr [n]

上面 数组arr 就是 变长数组

变长数组本质特征:数组长度只有在运行时才能确定,所以变长数组不能初始化


目前:有些编译器支持C99变长数组的语法,例如gcc等;不过遗憾的是,在VS2022上不支持

结尾:

     数组也是C语言中重要的一部分,学号它不仅需要充分学习理论知识,更多的是如何去实践它。

  

    创作者留言:本人是初学者,文章中可能出现错误或者不恰当的地方,欢迎大家指正与建议!

                                                                                                                  创作时间:2023.11.26

               

                 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值