因为交换数组元素的函数inv里的for循环的结束条件错误,导致了数组越界,修改如下:
#include <stdio.h>
void inv(int *x,int n){
int t,*i,*j;
i=x;j=x+n-1;
for(;i<j;i++,j--){
t=*i;
*i=*j;
*j=t;
}
return ;
}
int main(void){
int i,a[10]={1,2,3,4,5,6,7,8,9,0};
inv(a,10);
for(i=0;i<10;i++){
printf("%d ",a[i]) ;
}
return 0;
}
for(;i<j;i++,j--) 你的for循环写的不太对,这么改就可以了
改动处见注释,供参考:
#include <stdio.h>
void inv(int* x, int n)
{
int t, * i, * j;
i = x; j = x + n - 1;
for (; i < j; i++, j--)
//for(i<j;i++;j--) 修改
{
t = *i;
*i = *j;
*j = t;
}
return;
}
int main()
{
int i, a[10] = { 1,2,3,4,5,6,7,8,9,0 };
inv(a, 10);
for (i = 0; i < 10; i++)
printf("%d ", a[i]);
return 0;
}