使迭代器成为指针会加速C循环吗?

Jos*_*h K 2 c pointers

我运行了以下内容:

#include <stdio.h>
typedef unsigned short boolean;

#define false 0
#define true (!false)
int main()
{
    int STATUS = 0;
    int i = 0;
    boolean ret = true;
    for(i = 0; i < 99999; i++)
    {
        ret = ret && printf("Hello, World.");
    }
    if(!ret)
    {
        STATUS = -1;
    }

    return STATUS;
}
Run Code Online (Sandbox Code Playgroud)

它在不到一秒钟内完成.通常为0.9 - 0.92.

然后,我改变int i = 0;int *i = 0;现在我下0.2秒得到执行时间.为什么速度变化?

Ala*_*lan 10

您的运行时由打印到控制台所需的时间占主导地位.int ++上的i ++将指针增加指针的大小.根据您的计算机和编译器设置,这将是4或8.根据您报告的数字,可能是4.因此printf只执行了四分之一次.