C语言中数组的“那些事儿”

本篇文章主要是讲在我们C语言中,重要的知识:数组。人生,就是一场自己与自己的较量(哈哈哈),为了开发更快捷、更方便,那么今天开始我们走就进C语言的重点知识点。数组可以说是目前为止讲到的第一个真正意义上存储数据的结构。不仅如此,数组和指针是相辅相成的,学习数组可以为学习指针打下基础(点击:C语言中指针的“那些事儿”)。

那么到底什么是数组呢?顾名思义数组就是很多数的组合!(为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组)那么这些数有没有什么要求呢,是不是不管什么数组合在一起都是数组呢?同一数组中存储的数必须满足以下两个条件:

                                             (1)这些数的类型必须相同。

                                             (2)这些数在内存中必须是连续存储的。

换句话说,数组是在内存中连续存储的具有相同类型的一组数据的集合。

一:一维数组

数组中的每个元素都有一个序号,这个序号从0开始,而不是从我们熟悉的1开始,称为下标(Index)。使用数组元素时,指明下标即可,形式为:dataType  arrayName[length];

其中,dataType 为数据类型,arrayName 为数组名称,index 为下标。例如,a[0] 表示第0个元素,a[3] 表示第3个元素。

注意的是:

(1)数组中每个元素的数据类型必须相同

(2)数组长度 length 最好是整数或者常量表达式,例如 10、20*4 等,这样在所有编译器下都能运行通过;如果 length 中包含了变量,例如 n、4*m 等,在某些编译器下就会报错

(3)访问数组元素时,下标的取值范围为 0 ≤ index < length,过大或过小都会越界,导致数组溢出,发生不可预测的情况

二:二维数组

二维数组定义的一般形式是:dataType  arrayName[length1][length2];

其中,dataType 为数据类型,arrayName 为数组名,length1 为第一维下标的长度,length2 为第二维下标的长度。

二维数组在概念上是二维的,但在内存中是连续存放的;换句话说,二维数组的各个元素是相互挨着的,彼此之间没有缝隙。那么,如何在线性内存中存放二维数组呢?有两种方式:

(1)一种是按行排列, 即放完一行之后再放入第二行;

(2)另一种是按列排列, 即放完一列之后再放入第二列。

在C语言中,二维数组是按行排列的。

三:多维数组

C 语言中的多维数组,其实就是元素为数组的数组。n 维数组的元素是 n-1 维数组。例如,二维数组的每个元素都是一维数组,一维数组的元素当然就不是数组了。

多维数组声明时,每个维度用一对方括号来表示:char screen[10][40][80]; 
三维数组 screen 包含 10 个元素,从 screen[0] 到 screen[9]。每个元素又是一个二维数组,它有 40 个元素,这 40 个元素均是一维数组,然后每个一维数组内都有 80 个字符。整体来说,screen 数组有 32000(10×40×80)个 char 类型元素。

想要获取该三维数组 screen 内的某个 char 元素,必须指定 3 个索引值。例如,下面的语句把字符Z写入该数组的最后一个元素位置:screen[9][39][79] = 'Z';

四:数组与指针的区别

(1)数组并不是指针。

(2)指针保存的是数据的地址,数组保存数据本身,指针间接访问数据,首先取得指针的内容,把他做为地址,从这个地址提取数据;数组直接访问数据

(3)数组做为函数参数时会退化为指针。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

科技眼

共同努力!共同进步!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值