iCount 形参=4;它是通过pText-Begin-5得出来的。那么问题来了 pText等于0x012ca07a,pBegin等于0x012ca070,按理来说是a-1等于9啊 ,为什么会等于4?
vs十六进制数相减为什么不对啊
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- qq_40774221 2017-11-22 22:34关注
对于编译器而言,指针只有同类型才能相减,同类型的指针相减的结果就是 2个指针变量指向的地址数值相减的结果 再去除以指向的对象类型大小
你的这个问题 指向的对象类型wchar_t(2字节的宽字符) wchar_t* pText 和 wchar_t*pBegin. pText - pBegin 对于编译而已他会解释
为取pText的指向地址数值0x012ca07a 取pBegin指向地址的数值0x012ca070 相减在除指向的对象类型大小,
就是(x012ca07a-0x012ca070)/sizeof(wchar) = 5 (sizeof(wchar_t) = 2).
_编译器就是这么帮你编译的没有为什么. 如果是int* p1 ,int *p2;这样 指向的对象类型是int 最后就是除以4 因为sizeof(int)就是4 .
如果是个结构体譬如struct Age{int Year;int Month,;int Day;} 在对齐是4的情况下就是除以sizeof(Age) = 12. 不一定说的清楚,感觉解释就这么
拗口,你就当个参考,还是不懂到处找找指针的资料看看.
_本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 shape_predictor_68_face_landmarks.dat
- ¥15 slam rangenet++配置
- ¥15 有没有研究水声通信方面的帮我改俩matlab代码
- ¥15 对于相关问题的求解与代码
- ¥15 ubuntu子系统密码忘记
- ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
- ¥15 保护模式-系统加载-段寄存器
- ¥15 电脑桌面设定一个区域禁止鼠标操作
- ¥15 求NPF226060磁芯的详细资料
- ¥15 使用R语言marginaleffects包进行边际效应图绘制