左左右学堂 · 课程目录

第10期 一节课讲明白c语音中的数组

观看B站原视频 · 文稿与高清画面

helllo,小伙伴们,大家好。这里是左左右。这期视频我们接着讲c语言基础。听过之前视频的小伙伴们应该都熟悉这个表格。在之前的视频中,我们用结构体输出了其中部分内容。这里我要求大家把他们的身高按顺序打印出来。

好的,开始写代码。现在来看这么写是不是也没什么问题?假如这里我要求大家打印100个人的身高,这样写是不是就显得我们的代码过于冗长了?于是就引出数组。这里我们定义一个int类型的数组,数组名为height。数组的大小为3,也就是可以存放3个int类型的变量。数组成员用大括号括起来,成员之间用逗号隔开。

视频画面 01:27.5
视频画面 01:27.5 · 1080P 原图 · 查看对应视频

接着,我们将数组成员依次打印出来。是不是输出的仍然是我们想要的答案?这里有几点需要注意一下,在数组中,成员的下标是从0开始的,这个其实也不难理解。不管是二进制,十进制,还是十六进制都是从零开始的,数组成员下标不能把0跳过去吧,还有要注意的是这里的方括号,在定义数组时,方括号里的值代表成员数,在使用时,方括号里的值代表成员序号。

视频画面 02:17.8
视频画面 02:17.8 · 1080P 原图 · 查看对应视频

接下来我们把数组的其他几种写法都是写一下。最后,一种写法为什么报错了呢?听过上期视频的同学应该知道。我们定义数据类型的过程就是向内存索要空间的过程。我们最后一种写法内存都不知道你要和他要多少空间。这种写法就属于你是要了,但是你却没说要多少,内存该怎么给你?再回来看前几种写法,是不是内存都知道你要多少空间?

视频画面 03:58.4
视频画面 03:58.4 · 1080P 原图 · 查看对应视频

结合上期视频,大家是不是有豁然开朗的感觉?只要懂得这一原理,接下来我们是不是可以随心所欲的写了,你也别管它有几种写法了?武功的最高境界不就是无招胜有招吗?这时内存肯定要问了,要了5个成员的空间,为什么只填了三个?你就说“那你别管”。当然,这些都是心里话,他不问你也别回。

接着,我们把数组所占空间打印一下。是不是没有问题,一个int类型的变量占用4个字节,数组的大小为5,所以数组所占空间为20个字节。接着,我们把他们的血型也用数组打印出来。是不是也没有问题?我们在讲C语言基础第一期视频是不是打印了一个“hello vscode”?这个就相当于我们前面定义了一个char类型的数组,然后把他打印出来。

视频画面 06:29.4
视频画面 06:29.4 · 1080P 原图 · 查看对应视频

输出没有问题。那么,现在这两种写法有什么区别呢?我们打印出来看一眼。目前来看是不是也没什么问题?有的编译器第一行的输出是会出问题的,接下来我们把两个数组所占空间分别打印出来。这里第二种写法为什么会多一个字节呢?这是因为多出来的一个字节放\0来作为结束符。打印输出时,当识别到\0时就打印结束了。

这里的\0在asc码表中对应值为0,也就是内存给空出来8位全部为0的二进制空间作为结束位。我们来验证一下,是不是输出没有问题?字符型的数组我们在C语言中叫做字符串。在以后的代码编写过程我们按第二种双引号的写法写就行。

好的 今天的视频就到这里了。您的一键三连和关注是我持续更新下去的最大动力。