数组的创建和使用

        大家好啊我是Lovehutao,今天给大家介绍一下数组的创建以及使用方法,你问我为啥扫雷出完了才出数组?呵,开玩笑,人懒就是是可以为所欲为啊!先别管这些次要的东西了,让我们开始今天的学习吧!(傲娇已经退环境了,所以我就是懒ʅ(´◔౪◔)ʃ)

       今天的内容有点多,我会将其分成三个部分讲,就不寒蝉了(其实就是懒得打字了,我要玩明日方舟!我要抽2226!),分别是:什么是数组,一维数组,二维数组。

 一,什么是数组?

        数组是一类相同类型元素的集合,既然是集合就说明数组中是可以保存多个数据的,那么我们就能得出两个结论:

        1,数组中可以存放一个或者多个数据,且数组中数据至少有一个

        2,数组中只能存放相同类型的数据。

        而数组又分为多维数组和一位数组,在多维数组中我们最常用的就是二维数组了,本次我们就只介绍多维数组中的二维数组。

二,一维数组

      1) 一维数组的创建

       一维数组的创建格式为

        其中type表示类型,可以是float ,double, int ,char等,我们前面讲过数组中存放的必须是同一类型的数据,所以我们要在此输入类型,好让计算机知道这个数组到底要存储什么类型的数据,arr_name是你给数组取的名字,例如:int arr[10];      这样我们就创建了一个名为arr能存储10个整型的数组了。

        虽然计算机同意你取除库函数中已经包含的任何名字,但是对于我们而言,取一个有意义的名字或许是一个更好的选择,因为当你写的函数足够复杂时,如果你的数组名没有意义很容易就和其他的变量冲突或者混淆。因为这个而一起的错误是完全可以通过取名来避免的,因此在实际数组的实际运用中我们都会取一个有一定意义容易记住的名字,这样或许对后续的编程和调试都会有所帮助。

       2)一维数组的赋值

        我们已经知道了一维数组该如何创建,接下来我们就来看一下一维数组该如何赋值吧!

        一维数组的赋值有两种形式,一种是直接在创建好的一维数组外加={value1,value2},其中value指的就是你想赋给数组的值,用逗号隔开,这种赋值的方式也叫做一维数组的初始化,如下所示:

这样我们就创建好了分别为char类型和int类型的两个一维数组,并对其进行了初始化。而当你输入的数据的个数小于数组大小时,如果是整型它会自动将空缺处用0来填充,如果是字符它会填充‘\0’,至于其他的就要靠你们自己去试了。

        将到第二种赋值方法就不得不提到一个东西,那就是数组的存储方式了,在此之前让我们来打印上面两个数组的地址,如下:

我们可以看到无论是char数组还是int数组,它的地址都是以字节为单位(字符为1个字节,整型为4个字节,关于这些东西我以后会补上的〒▽〒)逐渐增加的,由此我们就可以得出数组在计算机中的储存是等差连续递增的,所以我们可以推出数组的下标也是递增的。因此我们就可以得出数组的下标对应的值。(别问我什么是下标我还没学到(@_@;))

如下:

        我们可以看到一维数组的下表从0开始n-1(n代表你规定的数组的大小)时结束,因此我们就可以通过在[ ]中输入数组对应的下标来为数组赋值,如下所示:

这样我们就把arr中的第4项换成了‘s’,arr1中的第3项换成了5。而通过这种方式,我们可以做到手动输入给一整个数组赋值,这里我就演示整型的情况了,如下所示:

        通过这种方法我们就可以给数组的每个元素赋值,将我们手动输入的数据存储到数组中,而这就需要之前讲到的分支循环语句了,这里我就拿arr1举例了,如下所示:

       3)一维函数的打印

        上面我们已经取好了函数,那么我们要怎么打印它呢?既然都讲到这里,我不说应该都知道了吧(๑•̀ㅂ•́)و✧,同样的通过循环语句我们就能打印出数组的全部内容(当然你想打印多少就多少自己定),如下所示:

这样我们就能打印出我们输入的值了,如下:

       4)一维数组的应用

        1.利用一维数组来实现给多个整数排序。

        如果在知道数组前我们给几个整数排序肯定需要将上一个的数据存储到一个临时的空间再将其与比它大或者小的交换从而达到排序的效果,如下所示:

        你可能觉得还好啊,这才几行代码不是挺方便吗?但是当你需要给n个整数排序时你就需要n(n-1)/2个else-if语句判断来给这些数据排序,这实在是有点繁琐了,不管你们受不受得了反正我是不行了  (°ー°〃)。而这个时候一维数组就能排上大用场,因为它能作为一个存储的媒介,从而让我们更加方便的对其中的整数进行比较,如下所示:

这边不小心从大到小了不过原理是一样的,不改了我要睡觉!(((φ(◎ロ◎;)φ)))

  我们可以看到使用数组的话能够做到原本要190个if-else语句才能做到的事情,是不是很方便呢?

        2.在一个递增的数列利用二分查找找到一个特定的值。

        所谓二分查找是什么呢?如果我们在一个递增的数列中一个一个找这个特定的值着实有点浪费。因此我们使用二分查找来简化计算机的运行步骤,二分也就是对半分,我们在找那个特定的值的时候,通过对半分的方法来缩小范围,直到找到我们想要的值。这样我们就能剩去大量步骤,那就让我们来尝试实现这一功能。

       首先我们很容易就可以想到利用left初始化为0作为数组的左下标,再利用sizeof计算数组存储的数据的个数,并以此计算出右下标right,又因为数组从0开始因此要减去1,这样我们就可以设一个x来表示两者取中,最后我们只需要给出一个循环让函数重复运行直到找到这个值为止,当我们找到时就打印出这个值在数组中的下标。如下所示:(你们自己看看吧(>▽)

一维数组的使用我们下讲这些吧以后有数组的用法我会去整理出来一起出一期博客的。(怎么感觉大概率会鸽的说(  ̄ー ̄))

三,二维数组

       1)二维数组的创建

        二维数组的创建格式为

       二维数组的创建和一维数组一样,但是不完全一样,由于二维数组是有行列的,计算机想要知道你的二维数组到底要存多少行,就得知道你一行能存少元素,因此我们可以不输入行数而一点要输入列数

       2)二维数组的赋值

        如下是几个二维数组初始化的方式:

其中我们能看到arr2arr3中有花括号,这代表这里面的数据单独成一行,而arr1和arr3则没有输入行数,让我们看看这四个数组里都存储了什么吧!(我们这里调试后打开监视就行看到里面存储的内容了,具体怎么做我会在后面的vs的调试中介绍<(^-^)>,这里是为了方便理解。)

从上至下一次是arr,arr1,arr2,arr3,原理其实和一维数组一样只不过是从数轴变为了坐标系罢了。

        二维数组空间的储存如下所示:

这张图没显示下标哈,但是二维数组下标也是从0开始的。

        无需多言我们之间来看二维数组是怎么通过输入赋值的吧,第一种在上面我们也看到了,而第二种同样运用了我们的循环来自己手动输入数组的值,只不过在一维上多加了一个而已。

看到这里相信多维数组都知道怎么赋值了吧!

       3)二维数组的打印

        如下所示我就不多赘述了:

       4)二维数组的应用

        二维数组带许多方面都有运用,根本讲都讲不完,具体有什么用处还是等以后为数组的使用专门开一栏吧。(实在讲不下去了(ρ_・).。)这里我就举一个例子好了。比如五子棋游戏的制作,还有刚讲完的扫雷小游戏等等都会需要二维数组的使用,亦或者是一些迷宫小游戏等等。

四,结尾

        本来我是准备再将几道习题已经列举几个二维数组的应用的,奈何本人也才刚开始学c语言,能力实在不足( -'`-; ),(其实最主要的是不想写了,想偷懒了吧!躺平!)希望我的分享能够帮助到大家。谢谢观看,拜拜!

    

         

        

        

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值