常见的值传递包括:数值传递、地址传递和引用传递,其中数值传递不改变实参内容,函数调用过程中会为中间变量赋予内存空间,调用结束后释放;地址传递可以对实参内容进行改变,同样涉及空间分配释放问题;引用传递则直接对实参进行操作,不需要再进行内存的重新分配。

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);
}