我对编程比较陌生,所以当有人建议构建一个结构数组(每个包含一个特定“item”的n个属性)比创建n个属性数组更快时,我发现我的知识不够关于数组来争论某种方式或另一种方式。C程序如何从内部数组中获取信息?
我这样说的:
how do arrays work internally in c/c++
和
但我还是不真正了解一个C程序如何检索从指数的数组中的特定值。
看起来很清楚,数组的数据元素在内存中相邻存储,并且数组名称指向第一个元素。
C程序是否足够聪明,可以根据数据类型和索引来计算出目标数据的确切内存地址,或者程序是否必须以某种方式迭代每一个中间数据片段才能到达那里(如在链表数据结构中)?
更重要的是,如果一个程序通过内存地址来请求一条信息,机器如何找到它?
编译器是由人写的,人们足够聪明,可以处理数组运算 –
很多使内存访问高效或低效的原因与缓存友好性有关:http://stackoverflow.com/questions/16699247/what -is-cache-friendly-code – happydave