通过引用传递vs传递指针?

mik*_*ich 18 c++

可能重复:
何时通过引用传递以及何时通过C++中的指针传递?

通过引用传递和通过指针传递值有什么区别?

Rud*_*udi 17

通过引用传递参数时,函数内的参数是从外部传递的变量的别名.当您通过指针传递变量时,您将获取变量的地址并将地址传递给函数.主要区别在于您可以将没有地址(如数字)的值传递到带有const引用的函数中,而不能将无地址值传递给带有const指针的函数.

通常,C++编译器将引用实现为隐藏指针.

您可以通过以下方式将函数更改为指针变量:

void flip(int *i) // change the parameter to a pointer type
{
    cout << "          flip start "<<"i="<< *i<<"\n"; // replace i by *i
    *i = 2*(*i); // I'm not sure it the parenthesis is really needed here,
                 // but IMHO this is better readable
    cout << "          flip exit  "<<"i="<< *i<<"\n";
}

int main()
{
    int j =1;
    cout <<"main j="<<j<<endl;
    flip(&j); // take the address of j and pass this value
    // adjust all other references ...
}
Run Code Online (Sandbox Code Playgroud)