为什么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语言,加油!!!

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



你可能感兴趣的:(c/c++)