C语言 | 深入学习数组

说明:本文主要讨论一维数组,适宜程度:对C语言初步认识及想深入学习者

1、从编译器角度理解数组

从编译器角度理解来讲,数组也是一个变量,和普通的变量没有本质的区别。变量的本质指的是一段内存空间,编译器在编译的时候,会将一个变量名和这段内存空间的第一个字节地址绑定,变量的类型决定了这段内存空间的字节数。当我们希望访问的这段内存空间的时候,一个方法就是利用变量名访问,但是变量名会受到作用域的限制,还有另外一种发法就是直接使用地址访问,并且不会受到作用域的限制。数组的定义一样遵循这样的原理。

2、从内存角度理解数组

站在内存角度,比如定义一个数组int buf[100]=(0),相当于一次性定义了100个int 类型的变量,每个变量空间4个字节。不同的是,这100个变量的内存空间是依次连续的。不仅方便定义,也方便访问。
但是如果我们采用int va0 val,va2,…va99的方式来定义的话,虽然都是 100个变量空间,但是定义繁琐,而且元素空间不一定连续,只能单个访问。虽然数组中的每个元素也必须逐个访问,但是由于这些空间连续地排列在一起,所以使用指针进行操作非常方便。实际上数组就是高效利用指针的典型例子, 如果想对指针有深刻的理解,就必须对数组有深刻的认识。

3、一维数组中几个关键符号的理解

下面以int buf[100] = {0};为例,集中讨论buf、buf[0]、&buf[0]和&buf这四个符号的内涵。

buf:

有两层含义,一是数组名,sizeof(b

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值