在我下面粘贴的程序中,我只是想知道为什么在for循环中初始化指针“p”?我习惯于读取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;
}
答案 0 :(得分:2)
这似乎只是一种风格。我可能还会将p
的初始化置于for
语句之外,因为在那里塞入所有内容会使代码更难阅读。 (因为for
循环的模式与您通常所期望的模式不同,有经验的程序员必须停下来,备份并思考它之前的内容才有意义。我最初认为有四个for
控制语句中的子句,直到我注意到第一个分隔符是逗号。)
编写这样的代码(而不是在循环外初始化p
)对性能没有影响。