我认为以下代码是正确的,但它不起作用。
int x, *ra;
&ra = x;
和
int x, ra;
&ra = x;
如果这两个代码片段都正确,请帮助我。如果不是,您在其中发现了什么错误?
最佳答案
你的两个表达式都不正确,应该是:
int x, *ra;
ra = &x; // pointer variable assigning address of x
&
是 ampersand是运算符的地址(在一元语法中),使用 &
您可以将变量 x
的地址分配给 pointer变量 ra
。
此外,正如您的问题标题所示:Assigning int value to an address
。
ra
是一个包含变量 x
地址的指针,因此您可以通过 ra
为 x
分配一个新值>
*ra = 20;
此处*
指针变量(一元语法)之前是deference operator在地址处赋值。
因为您还将问题标记为 c++所以我认为你混淆了 reference variable声明,即:
int x = 10;
int &ra = x; // reference at time of declaration
相应地,在引用变量的情况下,如果你想为 x
分配一个新值,它在语法上非常简单,就像我们对值变量所做的那样:
ra = 20;
(注意即使 ra
是我们分配给 x
的引用变量,没有 &
或 *
仍然改变反射(reflect),这就是引用变量的好处:简单易用,可以用作指针!)
请记住在声明时给出的引用绑定(bind),它不能更改指针变量在程序后面指向新变量的位置。
在 C 中我们只有指针和值变量,而在 C++ 中我们有指针、引用和值变量。在我的链接答案中,我试图解释 differences between pointer and reference variable .
关于c++ - 将 int 值分配给地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17852911/