swap(int& a,int& b)和swap(int * a,int * b)。有什么区别?

时间:2016-03-01 08:46:31

标签: c++

void swap(int *a, int *b)
{
    int iTemp ;
    iTemp = *a;
    *a = *b;
    *b = iTemp;

}
void swap2(int &a, int &b)
{
    int iTemp;
    iTemp = a;
    a = b;
    b = iTemp;
}

swap2(&a, &b)swap(*a,*b)之间有什么区别。虽然,最终结果是一样的。

1 个答案:

答案 0 :(得分:0)

void swap(int *a, int *b)

您期望变量通过指针传递(类型指针的值指向int)

void swap2(int &a, int &b)

您期望变量通过引用传递(这是整数变量的地址)

但是,之前的两个陈述在技术上是相同的。

1)第一个被称为:

int a,b;
swap(&x,&y);

另一个:

int a,b;
swap2(x,y);

2)您可以将A NULLnullptr传递给第一个。但是,你不能为第二个。

据我记得,在谷歌c ++风格指南中,他们更喜欢第一个,因为很明显参数可能会被更改。