指针与C+混淆+; 我对C++指针和引用操作符感到非常困惑。我的主要困惑是以下(简单)代码: #包括 使用名称空间std; 无效变更点(int&a) { a*=3; } int main() { int n=3; 变更点(n); cout
在该上下文中,符号(指针与C+混淆+; 我对C++指针和引用操作符感到非常困惑。我的主要困惑是以下(简单)代码: #包括 使用名称空间std; 无效变更点(int&a) { a*=3; } int main() { int n=3; 变更点(n); cout,c++,function,pointers,data-manipulation,C++,Function,Pointers,Data Manipulation,在该上下文中,符号(&)表示引用,而不是“地址”。例如: 引用在许多方面与指针等效,但其行为类似于值类型。 请参阅和以了解更多信息。在该上下文中,符号(&)表示引用,而不是“地址”。例如: 引用在许多方面与指针等效,但其行为类似于值类型。 你的第二个例子不是有效的C++,你只能对指针进行引用(或者它的类型过载:代码>运算符*/COD>,这不是你的例子)。 第一个示例通过引用传递参数(int&a不是“a的地址”,而是对a的引用),这就是为什么对a的更改实际上是对函数传递的对象的更改(在您的示例中,
&
)表示引用,而不是“地址”。例如:
引用在许多方面与指针等效,但其行为类似于值类型。
请参阅和以了解更多信息。在该上下文中,符号(&
)表示引用,而不是“地址”。例如:
引用在许多方面与指针等效,但其行为类似于值类型。
你的第二个例子不是有效的C++,你只能对指针进行引用(或者它的类型过载:代码>运算符*/COD>,这不是你的例子)。
第一个示例通过引用传递参数(
int&a
不是“a的地址”,而是对a的引用),这就是为什么对a
的更改实际上是对函数传递的对象的更改(在您的示例中,n
) < p>第二个例子不是有效的C++,只能对指针进行引用(或者类型过载的对象<代码>运算符*/COD>,这不是你的情况)。
第一个示例通过引用传递参数(
int&a
不是“a的地址”,而是对a的引用),这就是为什么对a
的更改实际上是对函数传递的对象的更改(在您的示例中,n
)符号AND表示变量通过引用传递给函数——但在函数内部,变量被视为通过值传递。这是为了使编写接受引用的代码更容易理解。符号AND表示变量通过引用传递给函数——但在函数内部函数将变量视为按值传递。这是为了使编写接受引用的代码更容易理解。@Asad ullahKhan:不,它不是:页面讨论了&
运算符,但您没有使用它(您正在声明一个引用,使用int&
)哦,那就更有意义了!谢谢你!@Asad ullahKhan in code:int a=b&c;
你不认为c
的地址对b做了什么,是吗?@Asad ullahKhan:不,不是:页面谈论&
操作符,但你没有使用它(你正在声明一个引用,使用int&
)哦,那就更有意义了!谢谢你!@Asad ullahKhan在代码中:inta=b&c;
你不认为c
的地址对b有什么作用,是吗?
#include <iostream>
using namespace std;
void changeInt(int &a)
{
a *= 3;
}
int main()
{
int n = 3;
changeInt(n);
cout << n << endl;
return 0;
}
#include <iostream>
using namespace std;
void changeInt(int &a)
{
*a *= 3;
}
int main()
{
int n = 3;
changeInt(n);
cout << n << endl;
return 0;
}
int some_int;
int & a = some_int; // Declare 'a', a reference to 'some_int'
int * p = &some_int; // '&' in this context is "the address of" 'some_int'