嵌入式开发基础从启动例程到硬件之array[

阅读: 评论:0

嵌入式开发基础从启动例程到硬件之array[

嵌入式开发基础从启动例程到硬件之array[

array[-1]为什么会动作

  • 概述
  • 回想起内存空间的样子
  • 当你想到指针时,你会看到一个数组
  • 数组和指针的区分使用
  • 结束语

概述

编写程序时,没有比数组更容易使用的了。因此,不知什么时候,“数组”这个抽象的概念在脑海中形成了,你有没有想过什么特别的东西呢?
在此,我们将探讨C语言中的数组实体。

回想起内存空间的样子

使用数组时需要注意的是,例如,
int array[10];
如果声明,array[0],array[1],.,array[9]是“索引使用0到9”。在这个范围内使用索引是一种彬彬有礼的程序的制作方法。但是,即使使用超出范围的索引,程序也会运行(除了作为动作是否正确之外)。极端的话,在array[-1]中也会动作。你能解释为什么吗?我不能只用数组这个概念来解释这一点。考虑数组的实体。

首先,让我们回忆内存空间的样子。所谓内存空间,是为了配置程序的代码和数据的(逻辑性的)场所,实际上存在于微型计算机的内置内存和微型计算机外部的RAM和ROM中。MMU(Memory Management Unit)的微型计算机也有,
在这里,为了简化说明,假设没有MMU。在内存空间中分配了地址,由此可以唯一地指定哪个内存。内存空间的地址,例如如果使用32位来表示的话,可以从0x00000000地址分配到0xffffffff地址,
在实际使用时,并不是所有这些地址都可以使用。只有安装了与地址对应的内存的部分才能使用。例如,在图3-1中,显示了从0x00000000地址到0x0000ffff地址和0xffffff0000地址到0xffffffff地址可以使用。

那么,数组array是如何在这个内存空间中存在的呢?
在图3-1中,数组数组排列在从0x1020到0x1047。由此,数组[0]是0x1020,array[1]是0x1024,array[2]是0x1028,以此类推。这些地址不是分配给数组中的每个元素的地址,而是根据数组的开头地址和偏移量计算的。
也就是说,在数组[5]的情况下,

数组[5]的地址=数组数组的起始地址

本文发布于:2024-01-28 14:15:09,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17064225128003.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:嵌入式   例程   硬件   基础   array
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23