gpt4 book ai didi

c++ - 为什么不能将引用和指针一起使用?

转载 作者:太空狗 更新时间:2023-10-29 19:56:08 24 4
gpt4 key购买 nike

本人是C开发史,最近在研究C++。我一直在研究“&”的含义,并且一直很困惑为什么它不能与指针一起使用。

到目前为止,我将参数中由“&”声明的任何变量解释为总是通过 *variable = ... 更改隐式值,本质上总是取消引用变量并更改变量.类似于传递指针并且始终通过取消引用值来更改值。

这让我开始思考,为什么下面的 C++ 代码 Not Acceptable ?

为什么我不能将指针传递给使用“&”接受参数的函数。函数中使用的值相当于去 '*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;
}

最佳答案

因为指针是指针,引用是引用;但是,您可以通过使用一元 * 来获得给定指针的引用运算符(取消引用):

void x() {
int org = 5;

int* orgp = &org;

square(*orgp); // ok

std::cout << org;
}

对称地,您可以使用一元 & 获得给定引用的指针(注意:您无法获得引用的地址,您将获得的是引用值的地址)。

关于c++ - 为什么不能将引用和指针一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55017846/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com