在当前的C编译器中,使用数组语法(ai)比使用指针(*(p+i))慢是真的吗?
发布于 2010-11-14 21:53:52
它们应该是相同的。但是:
for( i = 0; i < ...; ++ i ) ... array[i] ...可能比以下内容更慢:
for( p = array; *p; ++ p ) ... *p ...因为在前一种情况下,编译器可能需要执行*(array+i),而在后一种情况下,您只需要执行(*p)。
然而,在微不足道的情况下,编译器应该能够优化并生成相同的机器代码。
发布于 2010-11-14 21:50:12
它们是完全等价的。数组访问是指针数学的语法糖。
发布于 2010-11-14 21:50:36
不,根据C和C++标准,a[i]在定义上等同于*(a+i)。这也意味着a[1]等同于1[a]。尝试一下:)
https://stackoverflow.com/questions/4177746
复制相似问题