C语言之数组(一)

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])。

接下来,我们就来验证一下:

嗯,看来,我们的假设完全成立。

总结

对于数组的探索还没有结束,欢迎各位的批评指正,我们下次见!

  • 25
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值