#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, j = x + n - 1;两句呢,for(; i<=p; i++, j--)里也有j--啊?
追答无所谓的,只要前面对这个循环里的循环变量i,j有赋值,并且能保证循环正常进行,省略多少都可以。如果是完整的,就是省略这两句,但是要是参数初始化表达式里只写了i=x也能完整运行的
为什么不可以说省略了:i = x, j = x + n - 1;两句呢,for(; i<=p; i++, j--)里也有j--啊?
追答明白了就好,实际省略就是这两句,我没有关注后面那句的。其实应该叫一句,因为一个分号才叫一句。写法就是你写的那样,中间用逗号。