gpt4 book ai didi

c++ - 指针与 C++ 的混淆

转载 作者:太空宇宙 更新时间:2023-11-04 15:39:28 25 4
gpt4 key购买 nike

我对 C++ 指针和引用运算符感到很困惑。我的主要困惑是以下(简单)代码:

#include <iostream>

using namespace std;

void changeInt(int &a)
{
a *= 3;
}

int main()
{
int n = 3;
changeInt(n);
cout << n << endl;

return 0;
}

主要是,我对为什么更改地址 (&a) 会更改实际变量 (n) 感到困惑。当我第一次尝试这个问题时,这是我的代码:

#include <iostream>

using namespace std;

void changeInt(int &a)
{
*a *= 3;
}

int main()
{
int n = 3;
changeInt(n);
cout << n << endl;

return 0;
}

但这给了我一个错误。为什么当我更改地址时它会更改变量,但是当我更改地址指向的值时却出现错误?

最佳答案

您的第二个示例不是有效的 C++,您只能取消引用指针(或类型重载 operator* 的对象,这不是您的情况)。

您的第一个示例通过reference 传递参数(int &a 不是“a 的地址”,它是对a 的引用),这就是更改的原因a 确实是对函数传递的对象的更改(在您的情况下,n)

关于c++ - 指针与 C++ 的混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26007912/

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