【发布时间】:2009-08-03 00:45:15
【问题描述】:
这可能有一个非常简单的答案,但我就是看不到。
#include <stdio.h>
int main(void) {
int x = 0;
printf("\n%d\n%d\n",x,&x);
}
好的,所以 printf 给出了 0 (x) 和 2293752 (&x)。我试图找出一种方法来查看任何地址 (&) 并查看已经存储在那里的内容。这只是为了实验。有什么帮助吗?
【问题讨论】:
-
我建议你使用 %p 而不是 %d。它给你十六进制地址。
-
%p 用于
void*,因此需要演员表。顺便说一句,该标准不保证它将以十六进制打印。 -
不,它没有,但我还没有绊倒一个没有的实现。当然,现代本地 PDP-11 C 编译器可能会选择八进制,因为这是 PDP-11 上所有内容的自然表示。但是,我使用的 PDP 的最后一个本地 C 编译器 (DECUS C) 太旧了,无法使用 %p。
标签: c pointers memory-address