错误初始化指针事例的问题
本帖最后由 三千芳华 于 2018-6-5 13:50 编辑#include<stdio.h>
int main()
{
int i=10,j;
float *pf;
pf=&i;
j=*pf;
printf("i=%d\tj=%d\n",i,j);
return 0;
}
这个书上说这样做运行结果是i=10,j=0;
为什么啊?
顺便这样搞我的dev c++直接报错,改成int就OK了。但是为啥能运行就会是j=0呢?{:10_266:} 要确保你的源文件是 .c 文件
.cpp 是C++的,C++对类型要求严格
人造人 发表于 2018-6-5 13:50
要确保你的源文件是 .c 文件
.cpp 是C++的,C++对类型要求严格
哦哦,这样啊。那为啥是j=0啊 三千芳华 发表于 2018-6-5 13:52
哦哦,这样啊。那为啥是j=0啊
在地址栏输入 &i (取变量 i 的地址),然后回车
变量 i 的地址是 0x001CFED8
变量 i 中存储的值是 0a 00 00 00 ,这个值就是十进制的 10(能理解这个吗?)
在地址栏输入 pf ,然后回车
pf 中保存的值是 0x001CFED8,这说明 pf 指向变量 i
可以看到,pf 中保存的地址和变量 i 的地址一样
float 占 4 个字节,也就是把 0a 00 00 00 以浮点数格式解释
后面的我不知该如何解释了
你那里不明白的话,把你的问题提出来
^_^ 人造人 发表于 2018-6-5 14:13
在地址栏输入 &i (取变量 i 的地址),然后回车
变量 i 的地址是 0x001CFED8
变量 i 中存储的值是 ...
我去,这么多,造人大佬有你真好,万分感谢{:10_254:}
把 0a 00 00 00 以浮点数格式解释
就是 1.401e-44#DEN
DEN 一个无限接近 0 的值
把这个值转换成整数,结果就是 0
人造人 发表于 2018-6-5 14:20
把 0a 00 00 00 以浮点数格式解释
就是 1.401e-44#DEN
我研究研究{:10_256:}
页:
[1]