为什么大多数编程语言中的数组都是从0开始计数的,比从1开始计数有什么好处?
先说说为什么C语言的数组是从0开始
众所周知,C语言的数组是直接操作内存,那我们肯定得从内存的寻址开始说起:
以“以行为主序”的分配为例:设数组的基址为LOC(a c1 c2),每个数组元素占据l 个地址单元,那么aij 的物理地址可用一线性寻址函数计算:
LOC(aij)=LOC(a c1 c2)+( (i- c1) *( d2 - c2 + 1)+ (j- c2) )*l
推广到一般的三维数组:A[c1..d1] [c2..d2] [c3..d3],则aijk 的物理地址为:
LOC(i,j,k)=LOC(a c1 c2 c3)+( (i- c1) ( d2 - c2 + 1) (d3- c3 + 1)+ (j- c2) *( d3- c3 + 1)+(k- c3))*l
显然,此处的c1 c2 c3 为0 会大大简化计算有木有啊!!越是多维数组效果越明显
这对于计算机寻址计算来说显然好处是大大的啊这就是为什么最早C语言的数组起始都是0
至于什么其他的原因觉得美啊什么的都是后来人们YY的
事实上,在现在很多时候计算不再是瓶颈的时候,数组的下标也有从1开始的
比如matlab
难道matlab就不美了么= =
继续阅读
全部内容当前AI大模型哪家最好用?各家主要擅长哪些领域?普通人使用,推荐哪个?
作为一个日常工作中有超过 50% 时间都在与各种大模型对话的人,想跟大家分享一下我在使用各个主流模型时的一些体验和感受。 Google Gemini 系列 优点: 1. 极其便宜:无论是免费额度还是付费使用,价格都非常有优势。 2. Context Window 超级大:1-2M 的上下文长度,基本能覆盖绝大部分任务场...
AI如何辅助编程?
从我的观察来看,AI辅助编程最大的变革不在于代码自动生成本身,而在于它完全改变了我们与代码交互的方式,让编程从"写代码"变成了"设计系统"。就像我写的文章中提到的: "工程师的工作大部分就是造轮子与用轮子,而工具的逐渐标准化使得重复造轮子的需求越来越弱,越来越多的工程师核心任务并不是研发,而是整合(Integratio...
集成 GPT-4 的代码生成器 Cursor 使用体验如何?怎么用更高效?
你有没有过这样的时候:花了无数心力去“打磨”一个人工智能开发项目,结果却越修越乱,反而不如直接重来?这个现象在当今 AI 领域并不罕见。我们常常期望用 AI 帮助我们自动生成内容乃至代码,但却忘了 AI 在处理复杂的中间过程时,可能会带来比想象中更多的混乱。今天就和大家分享一个失败的 AI 开发项目经历,以及由此带来的...
