学习指针中遇到了麻烦……

来源:百度知道 编辑:UC知道 时间:2024/06/05 21:58:02
已知 double *p,*q,a[2];
p=&a[0];q=p+1;
那么(int)q-(int)q是什么意思啊?int 又有什么用啊?

(int)是前置转换成int型
q是指针,存着内存的地址
double是8字节,在内存中q=p+1,地址就加了8
如果p存的地址为1000,则q的为1008
n=(int)q-(int)q; // n的值为0
n=(int)q-(int)p; //n的值为8
n=q-p; //n的值为1,此时没有强制类型转化

(int)强制类型转换
可以将地址转成整数,

int(p) 强制类型转换,即把指针当作int来用
这时 int(p)为整型,其单位为一个字节。
p为指针,其单位为sizeof(double),由编译器确定,vc2005上为8个字节
(int)q-(int)q =0
(int) p-(int) q = 8 (vs2005上,别的编译器有可能是4,反正是sizeof(double))