(char *)(p+1) - (char *)p的值

(char*)(p+1)-(char*)p的值是多少是怎么算出来的呢?... (char *)(p+1) - (char *)p 的值是多少 是怎么算出来的呢? 展开
 我来答
FrankHB1989
2010-08-10 · TA获得超过4.2万个赞
知道大有可为答主
回答量:4569
采纳率:100%
帮助的人:3145万
展开全部
p应该是一个指向对象的指针,即非void*类型的一个指针。这个表达式的结果等于sizeof(*p)。
p是对象指针,对指针的+或-整数运算满足下标移动语义,也就是p+i(i是一个整数)应该等价于&p[i],这里的+i使p在数值增加了i*sizeof(*p),或者说在数值上(int)(p+i) 等于(int)p + i*sizeof(*p)。
而两个相同类型的对象指针相减,得到间隔的元素个数。也就是说,如果p、q是类型相同的指针,那么 p - q 的值等于((int)p-(int)q)/sizeof(*p)(由于类型相同,指向的对象类型也相同,sizeof(*p)也等于sizeof(*q))。
因此,无论p是什么对象类型的指针,(p + 1) - p 总是等于1。这里通过显式类型转换以避免得到这种不期望的结果。由于sizeof(char)等于1,于是(char *)(p+1) - (char *)p的值相当于(int)(p + 1) - (int)p,也就是((int)p + sizeof(*p)) - (int)p,即sizeof(*p)。
====
[原创回答团]

参考资料: 原创

辞玖触漫30
2010-08-10 · TA获得超过155个赞
知道答主
回答量:53
采纳率:0%
帮助的人:42.4万
展开全部
1吧,感觉不就是
char *p;
char *q=p+1;
cout<<q-p;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式