理工小羊 2023-04-02 08:59 采纳率: 66.7%
浏览 40
已结题

指针相减运算——C语言指针


#include<stdio.h>
int main()
{

    int* p = (int*)-1;
    int* p1 = (int*)4;
    if (p > p1)
    {
        printf("p>p1\n");
    }
    else
    {
        printf("p<p1\n");
    }

    printf("%d", p1 - p);
    return 0;
}

//结果是:1

  • 写回答

3条回答 默认 最新

  • 滴水不穿石 2023-04-02 10:38
    关注

    对不是指向同一个“对象(内存空间)”的指针进行加减运算,其实并没有任何意义,其结果由实现决定。
    ptrdiff_t这个专门进行指针计算的数据类型。
    把一个毫不相关的值强制转成指针类型,与一个指针指向这个值的地址是不同的!

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

报告相同问题?

问题事件

  • 系统已结题 4月10日
  • 已采纳回答 4月2日
  • 创建了问题 4月2日