for(; i<=p; i++,j--),前面第一个分号省略了哪一句代码?这种省略的原则是什么?什么时候能用这种省略?

#include<stdio.h>

void inv(int *x, int n)
{
int *p, m, temp, *i, *j;//i,j,p是指针变量。*i与*j交换即a[i]=a[j]交换。
m = (n-1) / 2;

i = x; //初值
j = x + n - 1;//初值。
p = x + m;

for(; i<=p; i++, j--)
{
temp = *i;
*i = *j;
*j = temp;
}

return ;
}

int main(void)
{
void inv(int *x, int n);

int i, arr[10], *p = arr;

printf("The original array:\n");

for(i=0; i<10; i++, p++)
{
scanf("%d", p);
}

printf("\n");

p = arr;
inv(p, 10);

printf("The array has been inverted:\n");;

for(p=arr; p<arr+10; p++)
{
printf("%d ", *p);
}

printf("\n");

return 0;
}

这个很明显啊,你的前面的语句已经给i赋了初值x了,省略的就是i=x这句代码
这种省略初学者还是少用为好,一般省略是因为你的变量i值已经确定的情况下就能使用追问

为什么不可以说省略了:i = x, j = x + n - 1;两句呢,for(; i<=p; i++, j--)里也有j--啊?

追答

无所谓的,只要前面对这个循环里的循环变量i,j有赋值,并且能保证循环正常进行,省略多少都可以。如果是完整的,就是省略这两句,但是要是参数初始化表达式里只写了i=x也能完整运行的

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-06-30
省略了i = x;这句,括号内第一个分号表示for循环的开始值,一般在括号内指定,如果前面有定义,那么可以直接在括号内写上分号即可。追问

为什么不可以说省略了:i = x, j = x + n - 1;两句呢,for(; i<=p; i++, j--)里也有j--啊?

追答

明白了就好,实际省略就是这两句,我没有关注后面那句的。其实应该叫一句,因为一个分号才叫一句。写法就是你写的那样,中间用逗号。

相似回答