2.编写一个函数,求一个整型数组的最大值、最小值,函数原型为:void func(int a[],int n,int *pmax,int *pmin);体会使用形参返回值返回多个值方法。

p.s.看似简单,暗藏玄机

1、如果函数参数直接传递的是指针类型,那么在函数内改变指针指向,并不能影响函数外的指针实例。只有传入指针的指针,才能改变指针的指向。
2、函数里的形参是一般变量,在函数里面改变变量的值,不会改变主函数里实参的值。指针就是地址变量,在函数里改变地址变量的值时,不会改变主函数实参地址变量的值。只有在函数里改变指针所指向的变量的值时 主函数实参指针所指向的变量的值才会改变。

只看资料不试代码不好理解,看看楼主的代码

#include<stdio.h>
int main()
{int i=0,n=0,a[80],max=0,min=0;
 void func(int a[],int n,int *pmax,int *pmin);
 int *pmax=NULL,*pmin=NULL;
 printf("please input number:\n");
 do{scanf("%d",&a[i]);
    i++;
 }while(getchar()!='\n');
 n=i;
 pmax=&max;
 pmin=&min;
 func(a,n,pmax,pmin);
 return 0;
}
void func(int a[],int n,int *pmax,int *pmin)
{int i=0;
pmax=pmin=&a[0];
for(i=0;i<n;i++)
{ if(*pmax<a[i])
  {pmax=&a[i];
  }
}
for(i=0;i<n;i++)
{ if(*pmin>a[i])
  {pmin=&a[i];
  }
}	
printf("the max:%d\nthe min:%d\n",*pmax,*pmin);
}

运行结果
指针作业2
如果直接没有

 pmax=&max;
 pmin=&min;
 func(a,n,pmax,pmin);

直接写成

func(a,n,&max,&min);

实参的值是没有改变的,,,不信的可以去试试????
透露一句,楼主加入了工作室,以后会学习链码,真的是纯自学啊,给了篇论文,自己去看懂。。。????
下一篇 指针作业3

相关文章:

  • 2021-06-03
  • 2022-12-23
  • 2021-12-05
  • 2022-12-23
猜你喜欢
  • 2021-12-29
  • 2021-04-21
  • 2022-12-23
  • 2021-12-07
相关资源
相似解决方案