C/C++ 传值,传引用,传地址

1,传值,当把值赋给函数形参时,是赋值的副本,在函数里做的任何改变都不会影响实参的值,

eg:

void swap(int a,int b)
{
    int temp;
    temp = a;
    a = b;
    b = temp;     
printf("a=%d,b=%d ",a,b); }

int main(void)
{
  int a = 7;
int b = 9;
swap(a,b);
    printf("a=%d,b=%d
",a,b);
return 0;
}

output:
a=9
b=7

a=7
b=9

2,传引用,是在函数形参的前面加上(&)符来表示函数传递的是值的引用,可以理解为是实参的一个别名,我们知道通过&a = b来给一个变量其别名,那么别名(a)的改变也会导致原来值(b)的改变

void swap(int &a,int &b)
{
    int temp;
    temp = a;
    a = b;
    b = temp;     
    printf("a=%d,b=%d
",a,b);      
}

int main(void)
{
   int a = 7;
    int b = 9;
    swap(a,b);

    printf("a=%d,b=%d
",a,b);
    return 0;
}

output:
a=9
b=7

a=9
b=7

3,传地址,就是把实参的地址传递给函数,是在函数形参的前面加上(*)符来表示函数传递的是地址,指针指向的地址一样,那么函数里改变指针的值,实参的值也会改变

void swap(int *a,int *b)
{
    int temp;
    temp = a;
    a = b;
    b = temp;     
    printf("a=%d,b=%d
",a,b);      
}

int main(void)
{
   int a = 7;
    int b = 9;
    swap(&a,&b);

    printf("a=%d,b=%d
",a,b);
    return 0;
}

output:
a=9
b=7

a=9
b=7
原文地址:https://www.cnblogs.com/ShowJoy/p/3613022.html