C语言笔记-数组存储-数组为什么从 0 开始编号

4 篇文章 0 订阅
1 篇文章 0 订阅

0. 为什么C语言中,数组要从 0 开始编号,而不是从 1 开始呢?

从数组存储的内存模型上来看,“下标”最确切的定义应该是“偏移”。如果用 a 来表示数组的首地址,a[0]就是偏移为 0 的位置,也就是首地址,a[L]就表示偏移 L个 type_size 的位置。

1. 一维数组的存储

一维数组的每个元素只含一个下标,其实质就是线性表,存储方法同顺序表。假设一维数组为 A = (A1,A2,A3,…,Ai,…,An),每个元素占L个存储单元,则元素A[i]的存储地址为:

LOC(A[ i ]) = LOC( A [ 0 ] ) + i * L

2. 二维数组

数组的数组就是多为数组。假设二位数组为Am*n,每个元素占L个存储单元,则元素A[i][j]的存储地址如下:

LOC( A [ i ] [ j ] ) = LOC( A [ 0 ] [ 0 ] ) + ( n * i + j ) * L
LOC( A [ i ] [ j ] ) = LOC( A [ 0 ] [ 0 ] ) + ( m * j + i ) * L

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值