指针的在函数中的两个基本用法:
用法一:
-
当函数需返回多个值时,某些值则需要通过指针返回
-
传入的参数实际上是需要保存带回的结果的变量
例如:找一列数中的最大和最小值并输出
#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; }