常见的值传递包括:数值传递、地址传递和引用传递,其中数值传递不改变实参内容,函数调用过程中会为中间变量赋予内存空间,调用结束后释放;地址传递可以对实参内容进行改变,同样涉及空间分配释放问题;引用传递则直接对实参进行操作,不需要再进行内存的重新分配。
int x,y; //数值传递 swap1(int x,int y) { int t; t=x; x=y; y=t; } //地址传递 swap2(int *p1,*p2) { int *temp; *temp=*p1; *p1=*p2; *p2=*temp; } //引用传递 swap3(int &x,int &y) { int t; t=x; x=y; y=t; } void main() { int x,y; int *p1,*p2; p1=&x;p2=&y; printf("输入两个数字:\n"); scanf("%d%d",&x,&y); printf("x=%d\ty=%d\n",x,y); swap1(x,y); swap2(p1,p2); swap3(x,y); }
原文:https://www.cnblogs.com/Magicbobobo/p/10779940.html