【发布时间】:2022-11-11 13:12:25
【问题描述】:
我们都知道在眨眼之间访问数组元素是多么容易:
#include<stdio.h>
int main()
{
int array[10];
array[5]=6; //setat operation at index 5
printf("%d",array[5]); //getat operation
}
是的,这个问题听起来可能有点愚蠢,但是编译器是如何让您快速获得您想要访问以插入数据或显示数据的索引。它是否会自行遍历该索引以完成 setat(),getat() 操作。
因为一般手段是:如果要求您从 1000 个单位的行中选择第 502 个元素,您将开始计数,直到您得到计数 502(在计算机 501 的情况下),这在计算机中是否发生同样的情况。
【问题讨论】:
-
您的标题完全具有误导性,通过附加括号使问题中似乎有 getat 和 setat 方法
-
C 不是一种非常高级的语言。当你索引到一个数组时,这就是你所做的。代码将在指向数组第一个元素的指针的偏移处访问内存。没有
getat或setat,为简单的指针+偏移量查找添加函数调用将是愚蠢的。通常,将同构数组实现为链表在任何低级别都没有多大意义。 -
数组[5] = 6。您知道“数组”的起始地址(例如:100)和每个元素的大小(int=4),因此您可以执行 100 + 4*5 并最终到达特定元素 5,然后将 6 放在那里