编写程序时,没有比数组更容易使用的了。因此,不知什么时候,“数组”这个抽象的概念在脑海中形成了,你有没有想过什么特别的东西呢?
在此,我们将探讨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小时内删除。
留言与评论(共有 0 条评论) |