关于指针取消引用的 C++ 技术问题

C++ Technical Question on Pointer Dereferencing

我们最近在我的大学 c++ class 中学习了指针,我只是有一点技术问题,因为当我谈论指针时,我想确保我所说的是有道理的。

因此,指针存储诸如变量或对象之类的内存地址。但是,当您取消引用该变量以编辑该地址的值时,幕后是真正访问和编辑存储在该位置 RAM 中的值,或者它是从该内存位置访问变量然后只是更改它的值.或者它是同一个?我希望这是有道理的。

换句话说,"Editing the dereferenced pointer changes the value at that memory location" 或 "Editing the dereferenced pointer changes the variable connected to that location" 更有意义吗?还是我只是想得太多了,这些语句实际上是同一个语句,因为编辑该内存位置的值也会同时编辑变量,因为无论如何变量都是从那里获取数据的?

在此代码中:

int *p = new int;
*p = 5;

p 指向的值没有名称。那里没有 "variable" ,只是一个内存位置。所以最好只说 "the value at that location has been set to 5".

也许这只是一个术语问题。不用太迂腐,标准术语是:

  • Object是一个分配了存储区域的东西,那个区域存储了一个值。该对象可能有也可能没有名称,
  • Variable 是用名称声明的对象,或者是用名称声明的引用。

在您的问题中,您通过将新值写入其存储区域来修改对象的值。

形式为*p的表达式与对象名称具有相同的类别(术语为lvalue),它指定存储区域一个对象,它可用于读取或写入该区域。