C语言指针做函数参数

mac2025-04-07  9

指针型函数的作用是将主调函数中的变量地址传递到被调函数中,从而实现变量的跨函数引用。 例:在主函数中输入两个整数并存入变量中,然后再被调函数中将这两个数互换,最后在主函数中输出结果。 示例一:参数传递:

#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; }
最新回复(0)