| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 620 人关注过本帖
标题:求解,关于指针
只看楼主 加入收藏
Spygg
Rank: 5Rank: 5
等 级:职业侠客
帖 子:135
专家分:394
注 册:2007-5-20
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
求解,关于指针
/*为什么(int)p=p;(int)q=q;(int)q-(int)p!=q-p?????
  我知道q-p是指针相减结果肯定为1,但是上面的问题还是不明白
*/
#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;
}
搜索更多相关主题的帖子: 求解 指针 
2010-09-11 23:51
cacker
该用户已被删除
收藏
得分:10 
提示: 作者被禁止或删除 内容自动屏蔽
2010-09-12 00:07
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
收藏
得分:0 
你表达清楚点行不,运行环境说下

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2010-09-12 00:08
清风拂晓
Rank: 8Rank: 8
来 自:火星
等 级:蝙蝠侠
威 望:1
帖 子:356
专家分:889
注 册:2010-8-13
收藏
得分:2 
这可能是指针的运算和整形数的运算规则不同的问题(int)(q-p)的结果也是1

清风拂暮(木)
2010-09-12 00:09
Spygg
Rank: 5Rank: 5
等 级:职业侠客
帖 子:135
专家分:394
注 册:2007-5-20
收藏
得分:0 
(int)p==p;(相等)
(int)q=q;(相等)
(int)q-(int)p!=q-p;(差值不等)
2010-09-12 00:55
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:8 
如果你将类型改为char就相等了

很明显C++里有根据类型调用方法的
编辑器默认的是静态联编
 
比如你定义的int *i;
那么不管i指向谁 我们知道i++  往前增加了一位,但是这一位它跨越了4个字节
因为他的类型是int ,
比如 char *i;
i++ 往前增加了一位,但是这一位只跨越一个字节

p-q= 它们相距的int位数(类型位数),比如相距几个int,几个char?与它们定义的类型有关
int(p)-int(q)=它们相距的字节数,

就比如定义int a[30];这个数组 是30个int位组成,120个字节的内存
2010-09-12 14:09
快速回复:求解,关于指针
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.035051 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved