int * p = (int*)1000;
#include <stdio.h>
int main()
{
int * p = (int*)1000;
int * q = (int*)2000;
printf("%d", p - q);
return 0;
}
小弟不才。。。这两句不明白 能否解释下 谢谢!
int * p = (int*)1000;
int * q = (int*)2000;
什么叫p与q的地址是随机的,不是在程序中已经制定了地址1000和2000吗?
当运行了int *p, *q后,指针简图如下
地址 内容
p -> ? ?
q -> ? ?
接着运行p = (int *)1000, q = (int *)2000,这里(int *)的强制转换是将1000和两2000这两个数字对待成整型的地址来看,指针简图如下
地址 内容
p -> 1000 ?
q -> 2000 ?
从上图可以看出指针p和q的值分别是1000和2000,而它们的内容(即*p和*q的值是未知的)
一下运算p - q,这里只是指针的值进行相减,并不要误解成它们的内容相减。
那编译的结果为什么会是-250呢??