请帮我找找C程序中的错误!!

来源:百度知道 编辑:UC知道 时间:2024/05/24 15:08:58
int max;
int min;
main()
{
void shuru(int *p);
void exchange(int a,int *b);
void shuchu(int *p);
void bijiao(int *p);
int a[10];
shuru(a);
exchange(max,&a[0]);
exchange(min,&a[9]);
shuchu(a);
system("pause");
}
void shuru(int *p)
{
int i;
for(i=0;i<10;i++)
{
scanf("%d",&*(p+i));
}
bijiao(p);
}
void bijiao(int *p)
{
int max=*p,min=*p,i,j;
for(p=(p+1);p<(p+10);p++)
{
if(max<*p)
max=*(p+1);
else min=*(p+1);
}
}
void exchange(int a,int *b)
{
int temp;
temp=a;
a=*b;
*b=temp;
}
void shuchu(int *p)
{
int i;
for(i=0;i<10;i++)
{
printf("%d",*(p+i));
}
}

这是一个关于输入十个数,把最大的与第一个调换,最小的与第一个调换的程序.问题在于:编译的时候都没有报错。但当输入完十个数

啊 我知道了 问题出在 bijiao函数中
void bijiao(int *p)
{
int max=*p,min=*p,i,j;
for(p=(p+1);p<(p+10);p++)
//这里p永远不会大于或等于p+10,死循环,下面引用*(p+1)的时候必然会引用到非法内存,程序崩溃~~~~~
{
if(max<*p)
max=*(p+1);
else min=*(p+1);
}
}