使用指针导航值数组更好,还是使用下标数组名称更好?
编译器如何处理这两种方法?
任何现代编译器都应该为这两种方法生成等效的汇编代码。
我做了一个简短的测试。我创建int arr[10]
并将所有单元格设置为10
使用由索引索引的正常 for 循环int
和一个使用int*
.
对我来说奇怪的是(我接受 Midhun MP 参数)指针索引循环汇编代码比正常方法大(多 1 行)。但是当我打开O3
优化输出时是完全一样的。
IMO 代码首先应该易于阅读和工作而不会出错。只有当你真的需要它们时,才能进行微优化。在其他情况下,可读性胜过性能。
如果你好奇它是如何工作的。自己做这个测试。准备 2 个版本的代码,编译它gcc -S
并比较输出。