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呢??