#include<stdio.h> int main() { int *i=3; int b=10; i=&b; printf("%d",i); }
输出到屏幕上是10485316。编译器是dev
%d, 这里你用的十进制输出。 %x,才是输出16进制。地址本来是16进制的,这里的i从16进制转换成10进制输出了。
有问题吗? i 存储的是 b 的逻辑内存地址,这个地址是 10485316 有问题吗?并且我能看出你这是(不大于)32 位的程序。
你现在打印的是b的地址,如果想打印b的值,应该使用
printf("%d", *i);
%p 打印地址 i中存储的是b地址。
1 回答3.3k 阅读
1.1k 阅读
2 回答2.5k 阅读✓ 已解决
3 回答11.3k 阅读
5 回答5.2k 阅读✓ 已解决
2 回答2.1k 阅读✓ 已解决
3 回答2.4k 阅读
%d, 这里你用的十进制输出。 %x,才是输出16进制。地址本来是16进制的,这里的i从16进制转换成10进制输出了。