2011-12-24 66 views
2

在我粘贴下面的程序中,我只是想知道为什么指针“p”在for循环中被初始化了?我习惯于读取for循环的条件为:从变量的这个值开始;直到它达到这个值;增加这一点。所以看起来奇怪的是,有另一个变量不能确定结束条件,并且在每次迭代过程中都没有增加。为什么在for循环中初始化这个无关紧要的变量?

我只是把p = & a [0];在for循环之上并留下其余部分。这仅仅是一种文体的东西,还是在处理事物的方式上有差异,取决于你初始化p的位置?一种方式比另一种更受欢迎吗?

#include <stdio.h> 
#define PRD(a) printf("%d", (a)) 

int a[]={0, 1, 2, 3, 4}; 

int main() 
{ 
    int i; 
    int* p; 

    for (p=&a[0], i=0; i<=4; i++) PRD(p[i]); 

    return 0; 
} 
+4

因为谁决定把它放在那里? :P – Benjamin 2011-12-24 03:02:42

+0

易于测试。将p =&a [0]移到循环外部,查看输出是否更改... – 2011-12-24 03:03:13

+0

是的,我可以看到输出是相同的。我只是想知道是否有一个我没有意识到的好处 - 如果有任何区别的话。 – bqui56 2011-12-24 03:05:31

回答

2

这似乎只是一种风格的东西。我可能还会在for声明之外进行p的初始化,因为填充所有内容会使代码难以阅读。 (因为for循环的模式与你通常所期待的不同,有经验的程序员必须停下来,备份并思考它的内容,然后才有意义。我最初认为for中有四个子句控制语句,直到我注意到第一个分隔符是逗号。)

这样写代码(而不是在循环外部初始化p)将不会影响性能。

+0

编写代码更容易让人阅读,这总是更好。计算机不会在乎任何方式。 – dreamlax 2011-12-24 03:07:27

相关问题