Skip to main content

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

       hello,小伙伴们,大家好,这里是左左右,这期视频我们接着讲c语言基础,听过之前视频的小伙伴们应该都熟悉这个表格,在之前的视频中,我们用结构体输出了其中部分内容,这里我要求大家把他们的身高按顺序打印出来,好的,开始写代码,现在来看这么写是不是也没什么问题?

main.c
#include<stdio.h>
int main(){
char b = 'a';
printf("%zu",sizeof(b));
}

假如这里我要求大家打印100个人的身高,这样写是不是就显得我们的代码过于冗长了?于是就引出数组,这里我们定义一个int类型的数组,数组名为height,数组的大小为3,也就是可以存放3个int类型的变量,数组成员用大括号括起来,成员之间用逗号隔开,接着我们将数组成员依次打印出来 ,是不是输出的仍然是我们想要的答案?这里有几点需要注意一下,在数组中,成员的下标是从0开始的,这个其实也不难理解,不管是二进制,十进制,还是十六进制都是从零开始的,数组成员下标不能把0跳过去吧,还有要注意的是这里的方括号,在定义数组时,方括号里的值代表成员数,在使用时,方括号里的值代表成员序号,接下来我们把数组的其他几种写法都是写一下,最后一种写法为什么报错了呢?听过上期视频的同学应该知道,我们定义数据类型的过程就是向内存索要空间的过程,我们最后一种写法内存都不知道你要和他要多少空间,这种写法就属于你是要了,但是你却没说要多少,内存该怎么给你?再回来看前几种写法,是不是内存都知道你要多少空间,结合上期视频,大家是不是有豁然开朗的感觉?只要懂得这一原理,接下来我们是不是可以随心所欲的写了,你也别管它有几种写法了,武功的最高境界不就是无招胜有招吗?这时内存肯定要问了,要了5个成员的空间,为什么只填了三个,你就说“那你别管”,当然,这些都是心里话,他不问你也别回,接着我们把数组所占空间打印一下,是不是没有问题,一个int类型的变量占用4个字节,数组的大小为5,所以数组所占空间为20个字节,接着我们把他们的血型也用数组打印出来,是不是也没有问题,我们在讲C语言基础第一期视频是不是打印了一个“hello vscode”,这个就相当于我们前面定义了一个char类型的数组,然后把他打印出来,输出没有问题,那么现在这两种写法有什么区别呢?我们打印出来看一眼,目前来看是不是也没什么问题?有的编译器第一行的输出是会出问题的,接下来我们把两个数组所占空间分别打印出来,这里第二种写法为什么会多一个字节呢?这是因为多出来的一个字节放\0来作为结束符,打印输出时,当识别到\0时就打印结束了,这里的\0在asc码表中对应值为0,也就是内存给空出来8位全部为0的二进制空间作为结束位,我们来验证一下,是不是输出没有问题,字符型的数组我们在C语言中叫做字符串,在以后的代码编写过程我们按第二种双引号的写法写就行,好的,今天的视频就到这里了,您的一键三连和关注是我持续更新下去的最大动力。