数组
计算机底层是通过地址计算来查找数组元素的,内存地址使用16进制表示。
在计算机内存中,每个变量都有一个唯一的地址,这个地址是由编译器或操作系统分配的。
对于数组来说,它的每个元素都是按照一定的顺序依次存储的,每个元素的地址可以通过数组的首地址和元素的下标计算得出。
例如,如果有一个整型数组 arr,它的首地址为 0x1000,每个元素占用 4 个字节,那么 arr[1] 的地址可以通过以下公式计算得出:
arr[1] 的地址 = 首地址 + 下标 * 元素大小
= 0x1000 + 1 * 4
= 0x1004
计算机底层会根据这个地址来访问内存中的数据,从而获取数组元素的值。
具体来说,计算机会向内存控制器发送一个读取内存的请求,请求的地址就是 arr[1] 的地址,内存控制器会根据这个地址来读取内存中的数据,并将数据返回给计算机。这个过程是非常快速的,时间复杂度为 O(1)。
用Go打印下数组连续的内存地址
我的是64位系统 所以每个元素占用了8个字节(Go默认根据系统选择位数,也可以指定int8、int16、int32)
package main import "fmt" func main() { arr := [5]int{1, 2, 3, 4, 5} for k, _ := range arr { fmt.Println(&arr[k]) } /* 0xc0000be060 0xc0000be068 0xc0000be070 0xc0000be078 0xc0000be080 */ }

浙公网安备 33010602011771号