看看学习一下~				
			
		{:1_1:}				
			
		1、
        使用异或 能对两个整数 进行交换。
        
        原理是a = a^b^b
        第一步*y = *x ^ *y
        第二步*x = *x ^ *y = *x ^ *x ^ *y = *y ,就把*y的值交给*x
        第三步*y = *x ^ *y = *y ^ *x ^ *y = *x,就把*x的值交给*y了
        
2、
        当输入是1,2,3,4,5,的时候,最中间的一次交换 是 把 3的值和3的值交换,
        这个时候就出现问题,因为传递给函数的*x和*y的x,y地址是一样的。所以对其中
        任何一个值修改,都会对另外一个进行修改
        当进入到函数后,*x和*y的地址是一样,值都为3.
        执行完第一步, *y = *x ^ *y    *y 的值是0因为3^3 = 0
        但是因为x,y地址是一样,所以*x的值也是0了。
        所以后面两步执行下来,结果就把*x和*y的值都改为0了,所以结果有0
3、
        代码只要如果 first == last的时候,不执行交换函数就行了。				
			
		头尾对调的部分不懂,感觉很有意思				
			
		看看什么意思????				
			
		{:1_1:}				
			
		{:1_1:}111111111111111116				
			
		看看答案				
			
		楼主加油,鱼C加油!我们都看好你哦!				
			
		激动人心,无法言表!				
			
		2.中间的0是由于swap函数中,指针x和y指向同一个内存位置,所以三条语句都是两个相同的数进行异或,故最终*x,*y都为0.
3.将for语句中截止条件改为first<last.				
			
		答案				
			
		真是难得给力的帖子啊。				
			
		强烈支持楼主ing……				
			
		回复看答案				
			
		强烈支持楼主ing……				
			
		可以这样修改,不知道原来代码的错误
void reverse_array(int a[], int count)
{
      int first, last;
      
      for( first=0, last=count-1; first <= last; first++, last-- )
      {
                      if(first == last);
                      
                      else
                inplace_swap(&a, &a);
      }
}				
			
		强烈支持楼主ing……				
			
		来学习..........................				
			
		enenen!!!!!!!!!!!!!!!!!!!!!