C关于指针的问题?

#include<stdio.h>
int main()
{    
    int *i=3;
    int b=10;
    i=&b;
    printf("%d",i);
}

输出到屏幕上是10485316。
编译器是dev

阅读 3.4k
4 个回答

%d, 这里你用的十进制输出。 %x,才是输出16进制。地址本来是16进制的,这里的i从16进制转换成10进制输出了。

有问题吗? i 存储的是 b 的逻辑内存地址,这个地址是 10485316 有问题吗?
并且我能看出你这是(不大于)32 位的程序。

你现在打印的是b的地址,如果想打印b的值,应该使用

printf("%d", *i);

%p 打印地址 i中存储的是b地址。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进