知识分享:C语言知识干货系列——数组篇
前面了解了c 语言的基础部分,下面在对它进行一个深入的了解吧!

数组
1,一维数组
数组是用来干嘛的呢?就像我们之前所说的变量一样,它是用来存储数据的。那它和变量存储数据有什么不同呢?
显然一个变量只能保存一份数据,在程序数据量小的情况下,使用起来比较方便。但是对于大规模的数据,单纯的变量就有点单薄了,对付大规模的数据,我们需要更强大的数据类型,将众多的变量凝聚在一起,也就构成了数组。
简单的来说,数组就是同一类型数据的集合,下面就是定义的简单数组并对其进行初始化:
下面通过一个综合的小案例来加深一下对数组的基本操作。
最后呢,对于数组的操作我们一定要切记不要越界访问,以免访问到数组之外的内存区域。
2,数组作为函数参数
C 语言允许将数组作为函数的参数,即可以将数组名作为函数的实参进行传递。可以在参数名后面加上中括号的形式,表示该参数是一个数组类型。如下就是一个以数组为参数的函数PArray:
3,字符数组
C 语言中,几乎所有的数据类型都可以被定义为数组。由于数组可以用来存储字符串,因此字符数组在C 语言中的运用极为广泛。
虽然C 语言中没有字符串这种数据类型,但它的运用却极为普遍,比如我们入手的第一个程序"hello world"。注意到,它是用双引号括起来的一段字符序列。另外,字符串还有一个重要的特征:字符串必须以空字符(用转义字符'\0'表示)作为结尾。即使是字符串常量,也会隐含地拥有这个空字符。例如:
那我们是否会想,如何才能将"abc" 这个字符串存储到数组中呢?
在看了上述方法2之后,可能我们就在想如何才能得到一个字符串的长度是吗?
对于字符串,它除了有大小之外,还有长度的概念。我们这里就简单的区分一下:
字符串的大小指的是字符串所占内存的字节数,使用sizeof()库函数计算得出,而字符串长度则是指字符串中有效字符的个数,用strlen()库函数计算得出。所谓有效字符,就是除去作为结尾标记的空字符以外的字符。
4,二维数组
啊,五环,你比六环少一环~,顾名思义,二维数组就是在一维数组的基础上多了一维,简单的说就是多了一个"[ ]"。
至于对二维数组的初始化,与一维数组的初始化类似,下面就提一下行初始化方式:
前面说过一维数组可以作为函数参数,那类比一下,二维数组肯定也可以作为参数来进行函数调用。与一维数组作为函数参数时需要在参数名跟上一对中括号类似,二维数组需要两对中括号,其中第一对中括号用于表示第一维的大小,其值可以被省略,即使用空中括号形式;第二对中括号用于表示第二维的大小,其值不可被省略,即必须指明第二维的大小。下面是一个打印二维数组所有元素的函数例子:
最后,我们可以用这样的思想来理解一下C 语言中的数组:
由普通元素(变量)构成的数组,是一维数组,即一维数组是普通元素(变量)的数组。
由一维数组构成的数组,是二维数组,即二维数组是一维数组的数组。
由二维数组构成的数组,是三维数组,即三维数组是二维数组的数组。
.......
理解了数组的嵌套,再去理解指针与数组的关系,就会比较轻松了 ~ ~
实践中回顾(总结)
理解并掌握数组,会为后面的知识扩展打下坚实的基础。而真正掌握数组不能光靠理论知识,而是要更多的去实践,比较经典的题目有矩阵转置和冒泡排序,下面就用一个经典的冒泡排序算法的实现来对数组的知识进行回顾。
编写程序,在数组中保存1~100的10个随机整数,对数组进行升序排序,并将排序后的数组元素打印输出,代码如下:
好了,经过上面的回顾,大家是否对C 语言中的数组有了一个更深的印象了呢?
持续分享中······
作者:博客园丨Charmchin
写在最后:对于准备学习C/C++编程的小伙伴,如果你想更好的提升你的编程核心能力(内功)不妨从现在开始!
微信公众号:C语言编程学习基地
整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)
欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!
