我知道指针存储它们指向的值的地址,但如果你直接显示指针的值到屏幕上,你会得到一个十六进制数。如果数字正是指针存储,然后当说

pA = pB; //both are pointers

你复制的地址。然后用非常小的项目,如ints和bools?

工作时不会出现是一个更大的开销,使用指针
有帮助吗?

解决方案

一个指针是本质上只是一个数字。它在RAM中,其中的数据是存储地址。指针本身是非常小(大概相同的大小在32位架构的int,在64位long)。

您是尽管这与int *s工作时的int不会保存任何空间正确。但是,这不是问题的关键(没有双关语意)。指针是有那么你可以使用引用的的事情,而不仅仅是使用的的事情的自己。

其他提示

的存储器地址。

这是在存储器中的位置,其中其他的东西

指针通常是在处理器的字长,所以它们一般可以在单个指令周期左右移动。简而言之,它们是快速。

正如其他人所说,一个指针存储的存储器地址,其是“只是一个数字”,但是这是一种抽象。取决于处理器架构也可能是一个以上的数,例如碱和偏移必须被添加到解除引用的指针。在这种情况下的开销是比如果地址是单一的数稍高。

是,存在开销在通过指针与直接,其中所述处理器可以把变量在寄存器访问int或布尔。指针,通常使用其中的间接胜过任何开销的值,即遍历阵列。

我已经提到的时间开销。不知道OP更关心空间或时间上的开销。

的数字是指其中的内存地址。指针的大小典型地是计算机的体系结构的天然大小因此没有额外的开销相比,任何其他类型的原语。

在某些体系结构有一个指针的额外的开销,以字符,因为该架构仅支持寻址字(32位或64位值)。因此,一个指针到一个字符存储为一个字地址和该字中的字符的偏移。解引用指针包括获取该单词,然后移位和屏蔽它的值来提取的字符。

在存储器中的地址。点的地方! : - )

让我从最基础开始。首先,你必须知道什么是变量,以及它们是如何使用的。

<强>变量基本上存储器位置(通常是含有一些值),并且我们使用一些标识符(即,变量名)来指代该存储位置,并使用存在于该位置的值。

为了更好地理解它,假设我们希望从出席一些相对于当前位置可变的存储器单元中的信息。我们可以使用标识符来提取附近小区的信息? 由于标识符(变量名)号只会给包含在该特定小区中的值。

但是,如果以某种方式我们可以得到在此变量存在,则我们可以容易地移动到附近的位置,并使用他们的信息,以及(在运行时)。存储器地址

这是其中指针开始发挥作用。它们被用于存储变量的位置,以便在需要时我们可以使用附加地址信息。

<强>语法:要存储变量的地址我们可以简单地使用&(地址)的操作者

foo = &bar 

下面foo的存储变量bar的地址。

现在,如果我们想知道目前位于该地址的值?

有关的是,我们可以简单地使用 *(反引用)操作

value = *foo

现在,我们已经存储变量的地址,我们将需要内存以同样的方式,因为我们需要在一个变量的情况下。这意味着指针也存储在内存中的相同的方式与其他变量,所以就像在变量的情况下,我们还可以将指针的地址存储到另一个指针。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top