• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

p = &number[0]; q = &number[9]

一指破宫 2018-08-18 浏览量:787
unsigned char number[10] = {0 1 2 3 4 5 6 7 8 9};
unsigned char *p;
p = &number[0]; q = &number[9];

那么 q-p 的结果就是 9

这里的9 指的是什么,是 不是地址的差值?

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • number数组的最后一个元素的地址赋值给q,q-p就是代表这两个元素的地址正好差9,如果是int类型就是18
    • 发布于 2018-08-18
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:13
  • 不确定值。

    这里的P、q是地址0与地址8的值,这些地址里的值不知道

    • 发布于2018-08-18
    • 举报
    • 评论 0
    • 0
    • 0

  • q 姑且认为你定义的是一个unsigned char的指针,也只有指针才能q = &number[9];   这样赋值

    ======================================================​

    p = &number[0];      //把指针P 指向number[0]的地址

    q = &number[9];     //​同理

    经过上面之后,p和q​的值都是一个地址值。其他的地址值是多少这个不好多,但是q-p的差值一定是9.

    为什么这么肯定?

    因为你在定义number[10] 的时候,这个数组一定是分配的连续的内存。具体的位置不好说,但是其差值一定是9,这个是没毛病的。

    所以:这个9,两个地址相减的差值。

    当然你也可以验证,将number[10] 的数组的值进行任意赋值,进行验证。

    • 发布于2018-08-18
    • 举报
    • 评论 0
    • 0
    • 0

  • p就是number[0]地址,q就是number[9]地址,由于number这个数组是按顺序存放的,而且是小端模式,那么地址正好相差9,和number数组里的数据无关。
    • 发布于2018-08-18
    • 举报
    • 评论 0
    • 0
    • 0

  • 是的,一个指向了首,一个指向了末尾,其实就是数组字节数
    • 发布于2018-08-18
    • 举报
    • 评论 0
    • 0
    • 0

  • 就是虚拟地址的差值。注意,这里其实是虚拟地址(程序运行在一个虚拟地址空间中)
    • 发布于2018-08-18
    • 举报
    • 评论 0
    • 0
    • 0

  • 不是的,*p是指向number[]的地址,*q是指向numbe人【9】的值,q和p相减就是9和0相减
    • 发布于2018-08-19
    • 举报
    • 评论 0
    • 0
    • 0

  • 不是地址的插值,按指针类型计算,如果p和q是int型指针,值则不是9
    • 发布于2018-08-20
    • 举报
    • 评论 1
    • 0
    • 0
一指破宫 回复了 US :那应该是什么? 回复

  • 最后运算的结果应该是地址的差值,也就是9个字节
    • 发布于2018-08-22
    • 举报
    • 评论 0
    • 0
    • 0

  • 你的指针p指向数组第一个值,q指向第九个值即最后一个值,所以这两个地址的差值就是9,没错。

    • 发布于2018-08-26
    • 举报
    • 评论 0
    • 0
    • 0

  • 对的,这里指的就是两个地址之间的差。这里的p和q是两个地址来的
    • 发布于2018-08-31
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个最好的结果就是两个地址的差值,跟你的地址长度有关系
    • 发布于2018-09-15
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个结果就是你的两个地址的差,因为你的运算直接处理你的地址
    • 发布于2018-09-18
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

p = &number[0]; q = &number[9]