难道地址不可以输出吗?
听不懂,你从什么现象上可以看出“地址不可以输出”?
先将你的代码
补全并
去掉无用的垃圾(这种事应该题主自己完成,而不是浪费别人的时间),得到
程序代码:
#include <stdio.h>
int main( void )
{
long i = 9;
long* p = &i;
printf( "%ld\n", &*p ); // 我在你的代码之外,多加了个\n,其它没变
printf( "%ld\n", &i );
}
指针类型用%ld?!按理属于未定义行为,但一般没什么大事,除了输出可能不正确
正确的做法可以是
程序代码:
#include <stdio.h>
int main( void )
{
long i = 9;
long* p = &i;
printf( "%p\n", &*p );
printf( "%p\n", &i );
}
如果一定要用十进制输出,那么
程序代码:
#include <stdio.h>
#include <inttypes.h>
int main( void )
{
long i = 9;
long* p = &i;
printf( "%"PRIuPTR"\n", (uintptr_t)p );
printf( "%"PRIuPTR"\n", (uintptr_t)&i );
}