*按值传递
#include <stdio.h> void myswap(int,int); int main() { int a,b; printf("请输入待交换的两个整数:"); scanf("%d%d",&a,&b); myswap(a,b); printf("调用交换函数后的结果是:%d 和 %d\n", a, b); return 0; } //(1)传值 void myswap(int x, int y) { int t; t=x; x=y; y=t; }
运行结果:
运行结果显示,并没有进行交换,说明只是形参的值发生了变化,实参的值并没有发生变化。
*地址传递
#include<stdio.h> void myswap(int *,int *); int main() { int a, b; printf("请输入待交换的两个整数:"); scanf("%d %d", &a, &b); myswap(&a,&b); printf("调用交换函数后的结果是:%d 和 %d\n", a, b); return 0; } //(2)传地址 void myswap(int *p1, int *p2) { int t; t=*p1; *p1=*p2; *p2=t; }
运行结果:
运行结果显示,进行了交换,因为实参的地址传给了形参,使得实参指针和形参指针指向同一地址。
*引用传递
#include<stdio.h> void myswap(int &,int &); int main() { int a, b; printf("请输入待交换的两个整数:"); scanf("%d %d", &a, &b); myswap(a,b); printf("调用交换函数后的结果是:%d 和 %d\n", a, b); return 0; } //(3)引用作形参 void myswap(int &x, int &y) { int t; t=x; x=y; y=t; }
运行结果:
运行结果显示,进行了交换,引用传递方式是在函数定义是在形参前面加上引用运算符“&”
知识点总结:
加深了对三种传递方式的理解使我们更好的学以致用。