70,020
社区成员




int arr[10], *p = arr;
arr[5]=5
求出偏移4*5 存到寄存器
对 数组地址+寄存器 进行赋值
p[5]=5
一样会有计算偏移的操作 存到寄存器
然后把p保存的数据从内存读取到另一个寄存器
最后通过2个寄存器保存的数据 计算出地址 进行赋值操作
当然会有各种不同的实现方式
这里仅通过某种可能的实现方式 进行分析
可以看到
p[5] 会比 arr[5] 多一步 读取p的数据到寄存器的操作
为什么会认为 p[5] 效率优于 arr[5] 呢?
[/quote]
好的,我会去阅读的,谢谢int arr[10], *p = arr;
arr[5]=5
求出偏移4*5 存到寄存器
对 数组地址+寄存器 进行赋值
p[5]=5
一样会有计算偏移的操作 存到寄存器
然后把p保存的数据从内存读取到另一个寄存器
最后通过2个寄存器保存的数据 计算出地址 进行赋值操作
当然会有各种不同的实现方式
这里仅通过某种可能的实现方式 进行分析
可以看到
p[5] 会比 arr[5] 多一步 读取p的数据到寄存器的操作
为什么会认为 p[5] 效率优于 arr[5] 呢?