为什么c语言第一个数组元素要从a[0]开始数起,不从a[1]数起呢?

  大一学习c语言刚接触数组时候,书上说第一个数组元素要从下标0开始数起,不能从1开始数,当时并没有探究为什么是这样的。比如 int a[4]={1,2,3,4};那么a[0]=1;为什么不从1数起呢,即a{1}=1呢?不更符合大家的生活习惯吗?

  原来数组括号里面的数字叫做偏移量,学过微机原理的应该都学过。int a[4];那么计算机就会在内存中随机分配一个首地址,在这首地址后面连续的分配16个字节,每个数组元素占用4个字节,那么得到

第一个数组元素a[0]起始地址:首地址+偏移地址0*4字节;

第二个数组元素a[1]起始地址:首地址+偏移地址1*4字节;

第三个数组元素a[2]起始地址:首地址+偏移地址2*4字节;

第四个数组元素a[3]起始地址:首地址+偏移地址3*4字节;

如果数组从1开始数起。那么得

第一个数组元素a[1]起始地址:首地址+(1-1)*4字节;

第二个数组元素a[2]起始地址:首地址+(2-1)*4字节;

第三个数组元素a[3]起始地址:首地址+(3-1)*4字节;

第四个数组元素a[4]起始地址:首地址+(4-1)*4字节;

可以看出如果从1开始的话,总要多一步减法运算,所以从0开始体现了C语言高效的特点!!!

第一次写博客,写的不是很好,不过我会继续努力的,希望大家多多支持我,给我提出宝贵的意见,大家一起努力进步!

之前在本科时候主要搞的是电机,现在研究生了导师的方向是智能算法,自己对编程也很感兴趣,现在重新捡起编程语言来学习,个人觉得如果想做一件事情,什么时候做都不会太晚,以后会一点一点的回顾C语言和C++的知识!!!

在后面博客中我会总结c语言,加油!!!


评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值