指针的应用
#include <stdio.h>
void swap(int *p,int *q);
int main()
{int a = 5;int b = 8;swap(&a,&b);printf("a=%d,b=%d\n",a,b);return 0;
}void swap(int *p,int *q)
{int t = *p;*p = *q;*q = t;
}
函数只能返回一个值!
可以通过参数返回多个值,参数需要使用指针。
参数的作用是把结果带出来。
#include <stdio.h>
void minmax(int a[],int len,int *min,int *max);
int main()
{int a[]={1,2,3,4,5,6,7,8,9,11,22,33,44,55,66,77};int min,max;minmax(a,sizeof(a)/sizeof(a[0]),&min,&max);printf("min=%d,max=%d\n",min,max);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];}}}
我们运算可能会出错,我们需要将结果通过另外的方式返回出来。
#include <stdio.h>
//如果除法成功,返回1;否者返回0int divide(int a,int b,int *result);int main()
{int a = 5;int b = 2;int c;if(divide(a,b,&c)){printf("%d/%d=%d\n",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;
}