今天是2025年1月1日,我终于想起了我博客的账号和密码(),虽然最近是期末周,我还有ggj要打,不过想到这么久都没有更新了C语言学完了都,还是得回家看看滴。
然后的话,我之前本来打算是系统的更新的,一章一章讲。不过工程比较大,时间比较紧绝对不是因为懒,所以我后面准备挑重点讲,比较简单的就略过。那么我们开始今天的正片,数组。
数组本质上就是相同类型的数据集合,就比如一个存放整形的数组,只能放整形,你想放一个字符串就会报错。数据的个数也有要求,一个或多个都可以,但不能是零。
打个比方,你去超市买了包黄瓜味的薯片。那讲道理,里面只会有黄瓜味的薯片,如果货不对板,你也不高兴,也会去找店家理论。再想想,如果你满心欢喜打开包装,发现里面是空的,又作何感想。虽然薯片装的克数有多有少,但是一片都没有,那不是耍人吗,你都会红温,更别谈一根筋的计算机了。
2.1创建
type arr[num];
类型: 定义了元素类型
名称:随便起,arr只是我的取名习惯
[num]:[]是下标引用操作符(现在不知道不影响),其中填入数字,表示创建了几个元素
2.2初始化
初始化和创建的区别就是,它会向数组里面塞东西,比如上面的例子数组arr前面三项就是1 2 3。
注意:{}是初始化所需必要格式,不同元素要用逗号隔开。而我们这里是不完全初始化,即没有把10个数据全部给出,后面的数据会被默认成0(不论什么元素类型的数组都是)。若全部给出,就称为完全初始化。
2.3数组类型
int arr[10] 的数组类型,可能很多人会觉得是int,但是实际上不是,我们只需要去掉它的名称arr,得到的int [10]便是该数组类型。类似于我买的薯片类型是原味 50克装。
在使用数组前,我们需要知道怎么找到存放的数据
比如这里我们知道数组的前三项是1 2 3,但是要怎么去找到比如说1呢。
这里就要引入数组的下标,这个概念
int arr[10]={ 1 , 2 , 3 }
0 1 2
其实也很容易理解,数组中的元素都有编号,只不过是从0开始,然后加1,这就是数组的下标
通过下标,我们可以精确使用或者修改数组中的元素,比如arr[0]就等于1
所以有n个元素,最后一个元素的下标就为n-1
注意:下标不能超过n-1,比如arr[10],这称之为越界访问,只花了一碗粉的钱,没有吃两碗的道理,所以这个操作是违法的,虽然有些编译器不会报错。
补充:arr是数组名,无法打印其中的内容
可以试试用%p来打印数组中各个元素的地址,你会发现它们是连续的。
其实和一维数组差不多,只有细微区别。
4.1创建和初始化
和一维数组的线性相比,二维数组就变成了面,前一个[]中表示了有多少行,后一个则表明了有几列。
它们也有下标,都是从0开始,就比如第二行代码,arr[0][0]为1,arr[0][1]为2。当一行填满时,才会进入下一行,如arr[1][0]=4。
如果,我们不想等到填满一行才进入下一列呢,这时候我们可以用{},来实现,比如arr[0][0]=1,而arr[1][0]=3。
相信很多人在想如果[]中填入变量可以吗,答案是在c99(和其后的)可以,而如果是使用vs2022这样的编译器,因为不支持c99,所以当你输入一个变量时毫不意外的就会报错。