hello,各位朋友,下面是我对于C语言知识的一些见解,欢迎大家批评指正。
1.数组的基本概念
数组是相同元素的集合.但需注意:
数组存放的是一个或多个数据,但元素个数必须不为0。
数组存放的数据,类型是相同的。
而数组分为一维数组和多维数组,最常见的多维数组是二维数组。
2.一维数组的初始化和创建
2.1 数组的创建
创建方法:type arr_name[常量值]。
type是数组指定存放数据的类型。
arr_name是数组的名字,由自己而定。
[常量值]表示数组元素个数。
例:int data[10] char ch[5]
2.2 数组的初始化
数组在创建出来时,我们要给它一些初始值,这时就需要初始化了。
初始化分为两种,一种是完全初始化,另外一种则是部分初始化。
所谓完全初始化,就是给数组每个元素都赋予初始值。即:
而部分初始化,就是给数组的部分元素赋予初始值。即:
2.3 数组类型
一讲到数组类型,有人会说:数组类型不是已经表示出来了吗?nonono。我们在写代码时,数组名前面的类型名其实是数组元素值的类型,而不是数组类型。那么,数组类型到底是什么呢?其实,我们只需把数组名去掉,剩下的部分就是数组类型了。若我们创建了一个数组int arr[20],那么,数组类型就是int [20].
3. 一维数组的使用
3.1 数组下标
我们规定:给定一个数组arr[n],则该数组下标从0开始,最后一个元素下标为n-1。
那我们该如何访问数组内的元素呢?这时,我们就需用到下标引用操作符''[]''了。
如果我们需要表示数组内第二个元素,则输入arr[1],第五个则是arr[4],以此类推。
3.2 打印下标
知道了这么多,那我们如何把数组内元素打印出来呢?这时我们考虑运用for循环来输出数组元素。
这样,我们就完成了对数组下标的打印。
2.3 输入数组
对于部分初始化的数组,我们如何通过代码改变它的元素呢?这时,我们依然用for循环来解决。
嗯,完美解决。
4. 一维数组在内存中的存储
为了理解这段内容,我们可以通过以下问题来引入:
给定一个数组arr[10]={0},请打印出各个元素的地址。
为了解决这个问题,我们需了解:%p是专门打印地址的符号,它以16进制的形式来打印,同时最前面的0不会省略。那么,我们开始编写代码:
看下编译结果:
这时我们不难发现:每相邻元素的地址都相差4,而一个整型数据的大小正好为4。这时我们可以得出结论:一维数组在内存中应该是连续存放的,每个元素之间相差4个字节。
5. Sizeof计算数组元素个数
介绍:Sizeof是C语言中的一个关键字,可以计算类型或变量大小,也可以计算数组大小。
那么,我们开始讲讲如何计算。
首先,我们看看以下代码:
再看看编译结果:
那为什么结果是40呢?原来,这里的sizeof是用来计算数组大小的,10*4=40(字节)。
那如果我们将上述代码中的arr改为arr[0],即将整个数组arr改成第一个元素,那么结果是怎样的呢?
答对了!没错,答案就是4。因为一个整型元素的大小为4字节。那么,通过这两个案例,求数组元素的个数的方法就显而易见了:数组大小/一个元素的大小。
如果设元素个数为sz,转化为C语言就是:sz=sizeof(arr)/sizeof(arr[0])。
接下来,我们就来验证一下:
嗯,看来,我们的假设完全成立。
总结
对于数组的探索还没有结束,欢迎各位的批评指正,我们下次见!