为什么指针比声明数组更有效或更优?
答案 0 :(得分:5)
您将苹果与橙子进行比较。
指针包含一个值,该值是另一个变量的地址。数组是一个连续的项集合。它们不一样。
如果你澄清了你的问题,我们可以给你一个更好的答案。就目前而言,它毫无意义。
答案 1 :(得分:1)
他们不是。根据C标准,a[x]
只是*(a+x)
的语法糖。
实际上,如果使用a[x]
而不是原始指针算法,现代处理器有时可以生成更快的代码,因为在这种情况下,某些静态分析可以计算更多信息,从而实现更积极的优化。原因是更容易进行别名分析。
答案 2 :(得分:0)
在我的测试中(几年前)我发现完全相反 - 数组引用比指针快。我认为这是MSVC 6.0。这完全取决于编译器决定生成的汇编代码,而且它非常随意。
为了澄清,我正在比较以下内容:
for (int i = 0; i < length; ++i)
sum += p[i];
for (int i = 0; i < length; ++i)
sum += *p++;