指针的在函数中的两个基本用法:
用法一:
-
当函数需返回多个值时,某些值则需要通过指针返回
-
传入的参数实际上是需要保存带回的结果的变量
例如:找一列数中的最大和最小值并输出
#include <stdio.h>
void minmax(int a[],int len,int *min,int *max);
int main(void)
{
int a[]={1,2,3,4,5,6,7,8,9,12,13,17,21,23,55};
int min,max;
minmax(a,sizeof(a)/sizeof(a[0]),&min,&max);
printf("max=%d,min=%d",max,min);
return 0;
}
void minmax(int a[],int len,int *min,int *max)
{
int i;
*min=*max=a[0];
for(i=0;i<len;i++)
{
if(a[i]<*min)
*min=a[i];
if(a[i]>*max)
*max=a[i];
}
}
用法二:
-
函数返回运算的状态,结果通过指针返回
-
常用的套路是让函数返回特殊的不属于有效范围内的值来表示出错
例如:做两个整数的除法,若除法成功则函数返回1并输出,否则返回0
#include <stdio.h>
int divide(int a,int b,int *result);
int main()
{
int a=5,b=2;
int c;
if(divide(a,b,&c))
printf("%d/%d=%d",a,b,c);
return 0;
}
int divide(int a,int b,int *result)
{
int ret =1;
if(b==0)
ret=0;
else
*result=a/b;
return ret;
}









