一个非常简单却又很难的c 程序!!!

来源:百度知道 编辑:UC知道 时间:2024/05/10 08:18:43
#include <stdio.h>

int main()
{
int* p = (int*)1000;
int* q = (int*)2000;
printf("%d", p - q);
return 0;
}

请问结果是多少 并详细解释!!!
那(int*)的具体作用是什么

在32-bit机器上执行应该是-250.
为什么不是1000呢,因为p和q都是int型的指针,int型占4个字节,p和q两个指针之间隔了250个int数,所以,q-p是是250,p-q就是-250了,要是你把int换成double的话,结果就是-125了,我想聪明的楼主应该知道为什么了吧,哈哈。

//问题的补充
int* p = (int*)1000
p是一个指针,p的值,也就是他指向的地址,就是1000,
//(int*)的作用就是强制转换,要求编译器把1000看成是(int*)型的指针的值。
1000是指针指向的地址,不是指针

-250