Avatar ·

C++中指针和引用有什么区别?

大家好!我刚开始在Java和Python之后学习C++,对指针和引用感到困惑。似乎两者都可以在不复制的情况下操作对象,但我不明白什么时候该用哪个。 下面是我代码中的一个例子。我写了一个交换两个变量值的函数。首先我尝试使用引用: ```cpp void swap_ref(int &a, int &b) { int temp = a; a = b; b = temp; } ``` 然后我发现可以用指针做同样的事情: ```cpp void swap_ptr(int *a, int *b) { int temp = *a; *a = *b; *b = temp; } ``` 两种方法都有效。但我注意到,使用指针时需要在调用处到处加星号和取地址符,而引用则不需要。我还听说引用不能重新赋值,而指针可以。而且引用必须始终初始化,而指针可以是nullptr。 我的主要问题是:指针和引用之间的根本区别是什么?