c++ - 将 int 值分配给地址

标签 c++ c visual-studio-2010 pointers

我认为以下代码是正确的,但它不起作用。

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 地址的指针,因此您可以通过 rax 分配一个新值>

*ra = 20; 

此处* 指针变量(一元语法)之前是deference operator在地址处赋值。

因为您还将问题标记为 所以我认为你混淆了 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/

相关文章:

c++ - 替代 C++ 编译器?

c++ - QT 中信号和槽的清晰命名

c++ - 在 64 位 mac 上编译 OpenCV 代码

c++ - 使用迭代器从 boost 多索引中删除项目时的一致性

c - QuickSort 排序正整数,有时排序后第一个值是负整数

visual-studio - Visual Studio Makefile 项目同步

c++ - 什么是 C 中指向 'array of characters' 的指针?

c - 在 Verilog 过程接口(interface)中,是否可以多次扫描迭代循环?

c - 增加堆栈保留后堆栈溢出

visual-studio-2010 - 文件夹未使用 VS 发布/Web 部署上传