指针型函数的作用是将主调函数中的变量地址传递到被调函数中,从而实现变量的跨函数引用。
例:在主函数中输入两个整数并存入变量中,然后再被调函数中将这两个数互换,最后在主函数中输出结果。
示例一:参数传递:
#include <stdio.h>
void swap(int a,int b){
int t;
t = m;
m = n;
n = t;
printf("m = %d,n = %d",m,n);
return;
}
int main(void){
int a,b;
printf("please input two integers:\n");
scanf("%d%d",&a,&b);
swap(a,b);
printf("a = %d,b = %d\n",a,b);
return 0;
}
这种方法不能实现a和b的互换,实参只能传递给形参,形参不能传递给实参。
正确的源程序如下:
#include <stdio.h>
void swap(int *p,int *q){
int t;
t = *p;
*p = *q;
*q = t;
return;
}
int main (void){
int a,b;
printf("please input two integres:\n");
scanf("%d%d",&a&b);
swap(&a,&b);
printf("a = %d,b = %d",a,b);
return 0;
}
跨函数间接引用局部变量的一般步骤:
1,首先,将主函数中需要在被调函数中进行改写的变量的地址作为实参。
2,然后,在被调函数中定义与主函数中的地址实参相对应的指针形参。
3,最后,在被调函数中通过指针形参间接引用主调函数中对应的变量,并进行改写。
使用指针形参输出3个数中的最大数,相应的源程序如下:
#include <stdio.h>
void find(int a,int b,int c,int *p){
int m;
if(a > b)
m = a;
else
m = b;
if(c > b)
m = c;
*p = m;
return;
}
int main(void){
int x,y,z,max;
printf("please input three integers:\n");
scanf("%d%d%d",&x,%y,&z);
find(x,y,z,&max);
printf("最大数为%d",max);
return 0;
}