void max_min(array1)
int array1[10];
{
int *max,*min; //-----------(1) 定义了两个指针变量 max,min
int k,l;
int *p,*end_p;
end_p=array1+10; //-----------(2) 将数组array1[0]地址+10作为一个新地址赋给 end_p 这个指针
max= array1; //-----------(3) 将array1[0]的地址位赋给 max,将max的指针指向 array1数组。
min= array1;
for (p=array1+1;p p++ 是指针所绑定的地址加 1,即指针指向和原来相邻的一个变量
{
if (*p>*max) max=p; //-----------(4) 将指针p和指针max所指的变量的值进行比较,将比较大的那个变量的地址赋给 max这个指针,即指针max始终指向一个大的数据
if (*p<*min) min=p;
}
k=*max; //-----------(5)将指针max所指向的变量的值赋给k
*max=array1[0];array1[0]=k; //-----------(6) 将array1[0]的值赋给指针max所指向的变量
l=*min;
*min=array1[9];array1[9]=l;
return;
}
PS: max=&array1[0],是将array1[0]的地址赋给指针max
|