C 为什么这个无关紧要的变量在for循环中初始化?

C 为什么这个无关紧要的变量在for循环中初始化?,c,C,在我粘贴在下面的程序中,我只是想知道为什么指针“p”在for循环中被初始化?我习惯于将for循环的条件解读为:从变量的这个值开始;直到它达到这个值;增加这么多。因此,另一个变量似乎很奇怪,它不确定结束条件,并且在每次迭代中根本不递增 我会把p=&a[0];在for循环的上方,留下其余部分。这仅仅是一种风格上的东西,还是在处理事情的方式上有差异取决于你初始化p的地方?一种方法比另一种更可取吗 #include <stdio.h> #define PRD(a) printf("%d",

在我粘贴在下面的程序中,我只是想知道为什么指针“p”在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;
}
#包括
#定义PRD(a)printf(“%d”,a))
inta[]={0,1,2,3,4};
int main()
{
int i;
int*p;

对于(p=&a[0],i=0;i这似乎只是一种风格。我可能还会将
p
的初始化放在
for
语句之外,因为将所有内容都塞进其中会使代码更难阅读。(因为
for
循环的模式与您通常期望的不同,一个有经验的程序员必须停止、备份并思考其中的内容,然后它才会有意义。我最初认为
for
控制语句中有四个子句,直到我注意到第一个分隔符是co。)mma.)


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

因为谁编写过决定将其放在那里的代码?:足够容易测试。移动p=&a[0]在循环之外,看看输出是否发生变化……耶,我可以看到输出是相同的。我只是想知道是否有一个我不知道的好处——是否有任何区别。另外,为什么不简单地使用
PRD(a[I])
根本不必费心于
p
吗?最好是编写人类更容易阅读的代码。计算机不会在意任何一种方式。