首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C中使用指针比使用数组语法要快得多,这是真的吗?

在C中使用指针比使用数组语法要快得多,这是真的吗?
EN

Stack Overflow用户
提问于 2010-11-14 21:49:37
回答 10查看 398关注 0票数 3

在当前的C编译器中,使用数组语法(ai)比使用指针(*(p+i))慢是真的吗?

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2010-11-14 21:53:52

它们应该是相同的。但是:

代码语言:javascript
复制
for( i = 0; i < ...; ++ i ) ... array[i] ...

可能比以下内容更慢:

代码语言:javascript
复制
for( p = array; *p; ++ p ) ... *p ...

因为在前一种情况下,编译器可能需要执行*(array+i),而在后一种情况下,您只需要执行(*p)

然而,在微不足道的情况下,编译器应该能够优化并生成相同的机器代码。

票数 9
EN

Stack Overflow用户

发布于 2010-11-14 21:50:12

它们是完全等价的。数组访问是指针数学的语法糖。

票数 11
EN

Stack Overflow用户

发布于 2010-11-14 21:50:36

不,根据C和C++标准,a[i]在定义上等同于*(a+i)。这也意味着a[1]等同于1[a]。尝试一下:)

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4177746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档