C++ 通过参考和;和*?

C++ 通过参考和;和*?,c++,C++,通过引用传递和使用C指针表示法之间有什么区别 取消某些函数(某些类型和参数) 及 void some_函数(some_type*param) 谢谢 你不能得到一个空引用:这本身就给了你很多安全性 您可以将引用视为一个对象:您可以取消引用它或您需要的任何内容 基本上,您可以像处理自己的对象一样处理安全指针。当您在子例程调用中传递指向变量的指针时,该变量的地址将传递给子例程。要访问子例程中的变量,必须取消对指针的引用 当您传递对变量的引用时,编译器将负责在变量传递给子例程时获取变量的地址,并在子例

通过引用传递和使用C指针表示法之间有什么区别

取消某些函数(某些类型和参数)

void some_函数(some_type*param)

谢谢

  • 你不能得到一个空引用:这本身就给了你很多安全性
  • 您可以将引用视为一个对象:您可以取消引用它或您需要的任何内容

基本上,您可以像处理自己的对象一样处理安全指针。

当您在子例程调用中传递指向变量的指针时,该变量的地址将传递给子例程。要访问子例程中的变量,必须取消对指针的引用


当您传递对变量的引用时,编译器将负责在变量传递给子例程时获取变量的地址,并在子例程中取消对变量的引用。

我怀疑是否有人会复制这里已有的1000个教程和解释中的一个。看一看:可能的重复:重复:通过取消对空指针的引用,您可以很容易地获得空引用。这是出于防御或偏执??这通常是一个更大的错误:您的引用指向一个已被破坏或从未存在过的对象。臭名昭著的例子:
std::vector myVec;myVec.front()。。。你多么后悔,
std::vector::front
没有超出范围!这绝对不是一个语法上的甜点。正如你从其他答案中看到的那样,两者之间有很多细微的区别,因为引用是一个别名。见下文。