我曾从事 C 开发工作,最近一直在学习 C++。我一直在研究 '&' 符号的含义,并且对于为什么它不能与指针一起使用感到非常困惑。
目前为止,我认为,任何由参数中的 '&' 声明的变量都是通过
这让我想到,为什么下面的 C++ 代码是不可接受的?
为什么我不能通过 '&' 将指针传递给一个接受参数的函数?在函数中使用的值将相当于对所有 r 的赋值都执行 '*r = ...'
目前为止,我认为,任何由参数中的 '&' 声明的变量都是通过
*variable = ...
隐式地改变值的,本质上总是对变量进行解引用和更改变量。类似于传递指针并且值的更改总是通过解引用值来完成。这让我想到,为什么下面的 C++ 代码是不可接受的?
为什么我不能通过 '&' 将指针传递给一个接受参数的函数?在函数中使用的值将相当于对所有 r 的赋值都执行 '*r = ...'
#include <iostream>
#include <string>
using namespace std;
void square(int& r) {
r = r * r;
}
void x() {
int org = 5;
int* orgp = &org;
square(orgp);
std::cout << org;
}
int main(void)
{
x();
return 0;
}
*r = ...
。但是指针到引用之间没有自动转换,它们基本上是两种不同的类型。因此,如果您将指针传递给需要引用的函数,则会出现错误,因为编译器无法将指针转换为引用以使其成为参数。 - Martin York