Moonquaks 2021-11-15 15:53 采纳率: 66.7%
浏览 31
已结题

如何理解指针之间的字节数

int num, a[5] = {1, 2, 3, 4, 5};
int *p = a, *q; //指针p指向元素a[0]
q = p + 4; //相当于q = p + 4×sizeof(int),将q指向a[4]
num= q – p; //指针q和p之间的元素个数,值为4
num= (int)q – (int)p; //指针q和p之间的字节数,值为16
怎么样理解最后一行

  • 写回答

2条回答 默认 最新

  • CSDN专家-link 2021-11-15 16:17
    关注

    q-p表示两个指针之间有多少个元素,不是内存大小。内存大小需要q-p再乘以指针类型的长度。
    强行用(int)转换成整型后,q和p就丢失了指针的特性,只是一个整数而已,整数之间相减,自然就等于实际的地址只差了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月23日
  • 已采纳回答 11月15日
  • 创建了问题 11月15日

悬赏问题

  • ¥25 LT码在高斯信道下的误码率仿真
  • ¥45 渲染完成之后将物体的材质贴图改变,自动化进行这个操作
  • ¥15 yolov5目标检测并显示目标出现的时间或视频帧
  • ¥15 电视版的优酷可以设置电影连续播放吗?
  • ¥50 复现论文;matlab代码编写
  • ¥30 echarts 3d地图怎么实现一进来页面散点数据和卡片一起轮播
  • ¥15 数字图像的降噪滤波增强
  • ¥15 心碎了,为啥我的神经网络训练的时候第二个批次反向传播会报错呀,第一个批次都没有问题
  • ¥15 MSR2680-XS路由器频繁卡顿问题
  • ¥15 VB6可以成功读取的文件,用C#读不了