为什么c++中的引用传递用functionName(dataType& variableName)来表示?

Why pass by reference in c++ is denoted by functionName( dataType& variableName)?

在 C++ 中。当我们要定义一个指针变量时,语法是:

dataType* pointerVariable = &variableName;

表示pointerVariable是dataType-pointer类型,存放的是variableName在内存中的地址。现在,当我们想要定义一个通过引用接受参数的函数时,语法是:

void functionName( dataType& argumentName );

当我们要调用那个函数时,语法是:

functionaName( argumentName );

我的问题是,当我们想要定义一个通过引用接收参数的函数时,这意味着一个函数接收一个指针作为参数,为什么我们不使用与定义一个参数相同的语法呢?指针,如下所示:

void functionName (dataType* argumentName);

然后,当我们要调用该函数时,语法为:

functionName(&argumentName);

为什么改进了新语法?

when we want to define a function which receives an argument by reference, which means a function that receives a pointer as an argument

这是你的问题:你混淆了语义和实现

在 C++ 中作为引用的参数是作为引用的参数。就 C++ 而言就是这样。这是一个参考参数,它的行为就像标准所说的参考参数的行为一样。

在编译器使用的 ABI 中,实现 可能涉及传递指针。但这是编译器做什么的问题,而不是标准定义的 C++ 模型中发生的事情。

why don't we use the same syntax as we used to define a pointer

因为它定义了一个接受 指针 的函数。

指针和引用不是一回事。指针变量可以在不同的时间指向不同的对象;引用变量不能。一旦引用绑定到一个对象,它就会一直绑定到该对象。

指针可以为 NULL。引用 不能 ,或者至少,如果你做了一个会创建 NULL 引用的事情,你已经调用了 UB,所以没有必要讨论程序之后的行为.等等。

然而,引用变量是在后台实现的,这些是 C++ 引用的规则,编译器必须遵守它们。