一段诡异的程序

作者在 2010-09-11 22:54:19 发布以下内容
/*为什么(int)p=p;(int)q=q;(int)q-(int)p!=q-p*/

/*同时推荐一本书<<C语言解析教程>>*/

#include<stdio.h>
int main(void)
{
     int a[2],*p,*q;
     p=&a[0];
     q=p+1;
     printf("q-p=%d\n",q-p);
     printf("q=%d\n",q);
     printf("p=%d\n",p);
     printf("(int)q=%d\n",(int)q);
     printf("(int)p=%d\n",(int)p);
     printf("(int)p-(int)q=%d\n",(int)q-(int)p);
     return 0;
}
 
默认分类 | 阅读 976 次
文章评论,共4条
帆乐2010
2010-09-12 17:58
1
是不是p-q的结果1代表一个int型数的个数,而后者表示四个字节数。也就是说强制转变后p,q的含义改变了。
帆乐2010
2010-09-12 18:41
2
也就是,p作为指针是一个一个数数的,而作为地址值是一个一个字节数的。&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;Right?
Spygg(作者)
2010-09-13 00:04
3
<div class="quote"><span class="q"><b>帆乐2010</b>: 也就是,p作为指针是一个一个数数的,而作为地址值是一个一个字节数的。&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;Right?</span></div>指针是以定义的数据类型的大小作为单位来进行操作的
帆乐2010
2010-09-14 23:28
4
thx。呵呵。
游客请输入验证码
浏览48270次
文章分类