我對編程比較陌生,所以當有人建議構建一個結構數組(每個包含一個特定「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