指针增量与C中的索引增量相比如何

时间:2011-06-01 14:57:40

标签: c pointers integer increment

考虑以下两个代码:

void PrintLetter(char *src)
{
 while(*src != '\0')
 {
   printf("%c",*src);
   src++;
 }
}

void PrintLetter(char *src)
{
 int i;
 for(i=0;src[i];i++)
  printf("%c",src[i]);
}

这两者之间是否有任何性能差异?

2 个答案:

答案 0 :(得分:5)

无论如何。无论您正在编写何种表单,编译器都将执行其优化。底层汇编代码是相同的。

答案 1 :(得分:2)

任何性能差异都取决于编译器。

一些小型嵌入式系统有相当简单的编译器,可能会产生一个比另一个稍微不同的代码 - 虽然没有测试,但很难猜测哪个可能最终“更好”(尽管如果我不得不“盲目地”猜测,我可能会选择第一个。)

对于典型的桌面/服务器系统(例如,gcc,VC ++,EDG)上的编译器,您可能会得到(基本上)相同的结果,因此在它们之间进行选择纯粹是选择您认为更具可读性的内容