根据你的思路,改写了一下程序,问题还是存在。
你在功能函数中使用的语句:
*p=array[0];array[0]=l;l=*p;
没有对P初始化,系统分配的地址分配的内存,不能随便赋值,程序运行后会弹出内存错误告警。
可能我没有理解你说的“实参还没出来,调用功能函数,是无意义的。”,能否再说详细点,谢谢。
#include "stdio.h"
void main()
{
int a[10]={0};
int i,*p1;
void k(int a[]);
for(p1=a;p1<(&a[0]+10);p1++)
{
printf("please input nmuber \n");
scanf("%d",p1);
}
p1=a;
for(i=0;i<10;i++)
printf("%5d",*p1++);
k(a);
}
void k(int array[])
{
int *max,*min,k,l;
int *p,*arr_end;
arr_end=array+10;
max=min=array;
for(p=array+1;p<arr_end;p++)
if(*p>*max) max=p;
else if(*p<*min) min=p;
k=*max;
l=*min;
*p=array[0];array[0]=l;l=*p;
*p=array[9];array[9]=k;k=*p;
/* int max,min,*p,*a_end,*m,*n,t;
a_end=a+10;
max=min=*a;
m=n=a;
for(p=a+1;p<a_end;p++)
{
if(max<*p)
{
max=*p;
m=p;
}
if(min>*p)
{
min=*p;
n=p;
}
}
printf("\nmax=%d,min=%d\n",max,min);
printf("\nmax=%d,min=%d\n",*m,*n);
printf("\nmax=%0x,min=%0x\n",m,n);
t=*m;*m=*a;*a=t;
t=*n;*n=*(a+9);*(a+9)=t;
for(t=0;t<10;t++)
printf("%5d",a[t]);
*/
}
你在功能函数中使用的语句:
*p=array[0];array[0]=l;l=*p;
没有对P初始化,系统分配的地址分配的内存,不能随便赋值,程序运行后会弹出内存错误告警。
可能我没有理解你说的“实参还没出来,调用功能函数,是无意义的。”,能否再说详细点,谢谢。
#include "stdio.h"
void main()
{
int a[10]={0};
int i,*p1;
void k(int a[]);
for(p1=a;p1<(&a[0]+10);p1++)
{
printf("please input nmuber \n");
scanf("%d",p1);
}
p1=a;
for(i=0;i<10;i++)
printf("%5d",*p1++);
k(a);
}
void k(int array[])
{
int *max,*min,k,l;
int *p,*arr_end;
arr_end=array+10;
max=min=array;
for(p=array+1;p<arr_end;p++)
if(*p>*max) max=p;
else if(*p<*min) min=p;
k=*max;
l=*min;
*p=array[0];array[0]=l;l=*p;
*p=array[9];array[9]=k;k=*p;
/* int max,min,*p,*a_end,*m,*n,t;
a_end=a+10;
max=min=*a;
m=n=a;
for(p=a+1;p<a_end;p++)
{
if(max<*p)
{
max=*p;
m=p;
}
if(min>*p)
{
min=*p;
n=p;
}
}
printf("\nmax=%d,min=%d\n",max,min);
printf("\nmax=%d,min=%d\n",*m,*n);
printf("\nmax=%0x,min=%0x\n",m,n);
t=*m;*m=*a;*a=t;
t=*n;*n=*(a+9);*(a+9)=t;
for(t=0;t<10;t++)
printf("%5d",a[t]);
*/
}