顺序表遍历循环变量起始值选0还是1?两种写法哪种更规范
结论
第一种从0开始循环的写法是更通用、更推荐的写法,第二种写法不算错误,但不属于工业界常规实现的写法。
原因说明
- C语言原生数组默认是0起始下标,你操作的
L->data本质就是数组,直接用0作为循环起始值,不需要额外做i-1的偏移处理,代码可读性更高,也能避免手滑写错偏移量导致的数组越界问题。 - 性能上虽然单次偏移的损耗可以忽略,但如果是高频操作的场景,第二种写法每次访问元素都多一次减法运算,属于没必要的性能开销。
- 所谓「SqList逻辑上从1开始计数」只是国内多数数据结构教材为了降低初学者理解门槛,刻意做的逻辑位序和物理下标的区分,这个设定只在理论讲解阶段方便对应“第1个元素、第n个元素”的表述,实际开发中完全没必要硬套这个逻辑,反而会增加代码维护成本。
补充说明
如果你是刚学数据结构,为了对应上课讲的位序概念,写练习代码的时候用第二种写法完全没问题,不属于错误写法,只是不适合在正式项目中使用。
内容的提问来源于stack exchange,提问作者scbz
相关产品推荐
相关产品推荐

