#include<stdio.h>
main() {
int i=9;
printf("\nAddress of i = %d", &i);
printf("\nAddress of i = %x", &i);
printf("\nAddress of i = %u", &i);
printf("\nAddress of i = %p", &i);
printf("\nValue of i = %d",i);
}
当我使用%p
时,我得到:i
= 0xbfd08d5c
的值
其他格式%d
,%x
,%u
不起作用。
答案 0 :(得分:5)
一般情况下,您不能使用%d
,%x
或%u
作为地址。您应该只使用%p
- 这是用于指针的唯一有效格式。
此外,由于%p
需要一个void指针,你需要为&i
操作添加一个强制转换:
printf("\nAddress of i = %p", (void*)&i);
尽管在大多数平台上代码都可以在没有强制转换的情况下工作,但最好添加一个强制转换来保证与指向int
的指针和void指针具有不同表示的平台的兼容性。我不确定是否有这样的平台,但标准并没有禁止它们。
答案 1 :(得分:-1)
地址是一个正整数,因此,使用&#34;%u&#34; ,即unsigned int,可以打印正确的地址值。
p.s。,&#34;%p&#34;以十六进制格式和&#34;%u&#34;通用十进制格式。