l_ljian 发表于 2019-8-30 13:14:53

sizeof(long)返回值是4,但是为啥*p=0x100;p+=sizeof(long)结果是0x110?

sizeof(long)返回值是4,但是为啥*p=0x100;p+=sizeof(long)结果是0x110?

//指针运算测试
void pstringTest()
{
    int *p=0x100;

    p+=sizeof(long);      
    printf("%x \n",p);   //输出0x110
    printf("%d \n",sizeof(long));//输出4
}


??????printf("%x \n",p);   //输出为啥不是0x104?????

我叫MD 发表于 2019-8-30 13:52:55

这里 p 指针是 int   ,p + 1,代表加向下一个 int ,这里加 4 相当于你加了4个int 的地址, 4个int 为十进制的16,转换为16进制为10,所以指向了 110 地址处

还望采纳

flamer 发表于 2019-8-30 13:53:09

p是int*类型p每加一个 相当于加一个int那么长   你加了4个int那么长 就是16

l_ljian 发表于 2019-8-30 14:40:35

我叫MD 发表于 2019-8-30 13:52
这里 p 指针是 int   ,p + 1,代表加向下一个 int ,这里加 4 相当于你加了4个int 的地址, 4个int 为十进 ...

谢谢点拨
页: [1]
查看完整版本: sizeof(long)返回值是4,但是为啥*p=0x100;p+=sizeof(long)结果是0x110?