|
|
我定义了一个整型变量intm,给intm赋值为4096,然后再定义一个整型指针变量*p1和一个字符指针变量*p2,执行如下操作:
p1=&intm;
printf("%d",*p1);
p2=(char *)p1;
printf("%d",*p2);
p1输出为4096这没有什么问题,但我以前一直认为p2应该与p1同值,只是仅输出了intm的高位字节即16
(4096的内存二进制为00010000 00000000),但机器p2输出了10,不是16,请问,这是为什么?
我这样:
void *lp;
p1=&intm; lp=(void *)p1; p2=(char *)lp;p2好像输出的也不是16,我觉得这样应该可以了啊,可还是不行。
以上两个问题谁能解答一下?先谢谢了! |
|