c语言 指针使数组倒置
#include<stdio.h>
#include<stdlib.h>
#define M 20
void fun( int *x, int n );
int main( void )
{
int i, n;
int a[M] = {0};
printf( "\nEnter n:\n" );
scanf( "%d", &n );
printf( "The original array:\n" );
for( i = 0; i < n; i++ )
{
scanf( "%d", a+i ); // 数组a[i], 被写成 *a + i.
}
fun( a, i );
printf( "\nThe array inverted:\n" );
for( i = 0; i < n; i++ )
{
printf( "%d\n", *(a + i ) );
}
system( "pause" );
return 0;
}
void fun( int *x, int n )
{
int *p, *i, *j;
int t, m = n / 2;
i = x;
j = x + n - 1; // 为什么这里会等于1, x+n-1 不是应该等于9吗?
p = x + m; // 还有这里 x+m 为什么等于3( p = 3 ), 而不是等于7?
for( ; i < p; i++, j-- )
{
t = *i;
*i = *j;
*j = t;
}
}
本人在vc 2005 上调试后看到(以上问题中)的值和本人思维不符合,不知道为什么。