【发布时间】:2013-05-11 14:58:28
【问题描述】:
我对 C 语言中指针的使用产生了令人震惊的疑问。因此,我对此进行了很多搜索,但没有得到令人满意的答案。事情是这样的:
我声明了一个 INT 类型的指针和一个 INT 类型的变量(例如 int x、*pointer)。因此,我们假设它们都占用了 RAM 中的连续地址,分别为 0x102 和 0x106。到目前为止没有任何惊喜。然后,我声明 x = 5。我的内存映射应该是这样的,不是吗?
int x, *pointer;
x = 5;
好的。在大学里我学会了这样分配指针:
pointer = &x;
而我的内存映射应该是这样的:
到目前为止一切顺利。但问题是:如果我分配的不是上面的指针,而是这样的:
*pointer = x;
'x'的内存地址不应该存储在指针的内存地址中吗?我一直在想“Memory Map 2”之类的东西,但结果和“Memory Map 1”一样,即0x106地址包含一个垃圾号。那么如果'x'的内存地址没有存储在指针的内存地址中,程序如何知道我想指向的位置呢?这些信息存储在哪里?
这似乎是一个简单的问题,但我无法理解。 :(
提前致谢! :)
【问题讨论】: